天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

數(shù)據(jù)庫設(shè)計(jì)技巧系列(三)——選擇鍵和索引

選擇鍵和索引

1. 數(shù)據(jù)采掘要預(yù)先計(jì)劃

我所在的市場(chǎng)部門一度要處理8 萬多份聯(lián)系方式,同時(shí)填寫每個(gè)客戶的必要數(shù)據(jù)(這絕對(duì)不是小活)。我從中還要確定出一組客戶作為市場(chǎng)目標(biāo)。當(dāng)我從最開始設(shè)計(jì)表和字段的時(shí)候,我試圖不在主索引里增加太多的字段以便加快數(shù)據(jù)庫的運(yùn)行速度。然后我意識(shí)到特定的組查詢和信息采掘既不準(zhǔn)確速度也不快。結(jié)果只好在主索引中重建而且合并了數(shù)據(jù)字段。我發(fā)現(xiàn)有一個(gè)指示計(jì)劃相當(dāng)關(guān)鍵——當(dāng)我想創(chuàng)建系統(tǒng)類型查找時(shí)為什么要采用號(hào)碼作為主索引字段呢?我可以用傳真號(hào)碼進(jìn)行檢索,但是它幾乎就象系統(tǒng)類型一樣對(duì)我來說并不重要。采用后者作為主字段,數(shù)據(jù)庫更新后重新索引和檢索就快多了。

— hscovell

可操作數(shù)據(jù)倉庫(ODS)和數(shù)據(jù)倉庫(DW)這兩種環(huán)境下的數(shù)據(jù)索引是有差別的。在DW環(huán)境下,你要考慮銷售部門是如何組織銷售活動(dòng)的。他們并不是數(shù)據(jù)庫管理員,但是他們確定表內(nèi)的鍵信息。這里設(shè)計(jì)人員或者數(shù)據(jù)庫工作人員應(yīng)該分析數(shù)據(jù)庫結(jié)構(gòu)從而確定出性能和正確輸出之間的最佳條件。

— teburlew

2. 使用系統(tǒng)生成的主鍵

這一天類同技巧1,但我覺得有必要在這里重復(fù)提醒大家。假如你總是在設(shè)計(jì)數(shù)據(jù)庫的時(shí)候采用系統(tǒng)生成的鍵作為主鍵,那么你實(shí)際控制了數(shù)據(jù)庫的索引完整性。這樣,數(shù)據(jù)庫和非人工機(jī)制就有效地控制了對(duì)存儲(chǔ)數(shù)據(jù)中每一行的訪問。

采用系統(tǒng)生成鍵作為主鍵還有一個(gè)優(yōu)點(diǎn):當(dāng)你擁有一致的鍵結(jié)構(gòu)時(shí),找到邏輯缺陷很容易。

— teburlew

3. 分解字段用于索引

為了分離命名字段和包含字段以支持用戶定義的報(bào)表,請(qǐng)考慮分解其他字段(甚至主鍵)為其組成要素以便用戶可以對(duì)其進(jìn)行索引。索引將加快SQL和報(bào)表生成器腳本的執(zhí)行速度。比方說,我通常在必須使用SQL LIKE表達(dá)式的情況下創(chuàng)建報(bào)表,因?yàn)?case number 字段無法分解為year、serial number、case type 和defendant code 等要素。性能也會(huì)變壞。假如年度和類型字段可以分解為索引字段那么這些報(bào)表運(yùn)行起來就會(huì)快多了。

— rdelval

4. 鍵設(shè)計(jì)4 原則

為關(guān)聯(lián)字段創(chuàng)建外鍵。

所有的鍵都必須唯一。

避免使用復(fù)合鍵。

外鍵總是關(guān)聯(lián)唯一的鍵字段。

— Peter Ritchie

5. 別忘了索引

索引是從數(shù)據(jù)庫中獲取數(shù)據(jù)的最高效方式之一。95%的數(shù)據(jù)庫性能問題都可以采用索引技術(shù)得到解決。作為一條規(guī)則,我通常對(duì)邏輯主鍵使用唯一的成組索引,對(duì)系統(tǒng)鍵(作為存儲(chǔ)過程)采用唯一的非成組索引,對(duì)任何外鍵列采用非成組索引。不過,索引就象是鹽,太多了菜就篌了。你得考慮數(shù)據(jù)庫的空間有多大,表如何進(jìn)行訪問,還有這些訪問是否主要用作讀寫。

— tduvall

大多數(shù)數(shù)據(jù)庫都索引自動(dòng)創(chuàng)建的主鍵字段,但是可別忘了索引外鍵,它們也是經(jīng)常使用的鍵,比如運(yùn)行查詢顯示主表和所有關(guān)聯(lián)表的某條記錄就用得上。還有,不要索引memo/note 字段,不要索引大型字段(有很多字符),這樣作會(huì)讓索引占用太多的存儲(chǔ)空間。

— gbrayton

6. 不要索引常用的小型表

不要為小型數(shù)據(jù)表設(shè)置任何鍵,假如它們經(jīng)常有插入和刪除操作就更別這樣作了。對(duì)這些插入和刪除操作的索引維護(hù)可能比掃描表空間消耗更多的時(shí)間。

— kbpatel

7. 不要把社會(huì)保障號(hào)碼(SSN)選作鍵

永遠(yuǎn)都不要使用SSN作為數(shù)據(jù)庫的鍵。除了隱私原因以外,須知政府越來越趨向于不準(zhǔn)許把SSN用作除收入相關(guān)以外的其他目的,SSN 需要手工輸入。永遠(yuǎn)不要使用手工輸入的鍵作為主鍵,因?yàn)橐坏┠爿斎脲e(cuò)誤,你唯一能做的就是刪除整個(gè)記錄然后從頭開始。

— teburlew

上個(gè)世紀(jì)70 年代我還在讀大學(xué)的時(shí)候,我記得那時(shí)SSN還曾被用做學(xué)號(hào),當(dāng)然盡管這么做是非法的。而且人們也都知道這是非法的,但他們已經(jīng)習(xí)慣了。后來,隨著盜取身份犯罪案件的增加,我現(xiàn)在的大學(xué)校園正痛苦地從一大攤子數(shù)據(jù)中把SSN 刪除。

— generalist

8. 不要用用戶的鍵

在確定采用什么字段作為表的鍵的時(shí)候,可一定要小心用戶將要編輯的字段。通常的情況下不要選擇用戶可編輯的字段作為鍵。這樣做會(huì)迫使你采取以下兩個(gè)措施:

在創(chuàng)建記錄之后對(duì)用戶編輯字段的行為施加限制。假如你這么做了,你可能會(huì)發(fā)現(xiàn)你的應(yīng)用程序在商務(wù)需求突然發(fā)生變化,而用戶需要編輯那些不可編輯的字段時(shí)缺乏足夠的靈活性。當(dāng)用戶在輸入數(shù)據(jù)之后直到保存記錄才發(fā)現(xiàn)系統(tǒng)出了問題他們?cè)撛趺聪耄縿h除重建?假如記錄不可重建是否讓用戶走開?

提出一些檢測(cè)和糾正鍵沖突的方法。通常,費(fèi)點(diǎn)精力也就搞定了,但是從性能上來看這樣做的代價(jià)就比較大了。還有,鍵的糾正可能會(huì)迫使你突破你的數(shù)據(jù)和商業(yè)/用戶界面層之間的隔離。所以還是重提一句老話:你的設(shè)計(jì)要適應(yīng)用戶而不是讓用戶來適應(yīng)你的設(shè)計(jì)。

— Lamont Adams

不讓主鍵具有可更新性的原因是在關(guān)系模式下,主鍵實(shí)現(xiàn)了不同表之間的關(guān)聯(lián)。比如,Customer 表有一個(gè)主鍵CustomerID,而客戶的定單則存放在另一個(gè)表里。Order表的主鍵可能是OrderNo 或者OrderNo、CustomerID 和日期的組合。不管你選擇哪種鍵設(shè)置,你都需要在Order表中存放CustomerID 來保證你可以給下定單的用戶找到其定單記錄。

假如你在Customer 表里修改了CustomerID,那么你必須找出Order表中的所有相關(guān)記錄對(duì)其進(jìn)行修改。否則,有些定單就會(huì)不屬于任何客戶——數(shù)據(jù)庫的完整性就算完蛋了。

如果索引完整性規(guī)則施加到表一級(jí),那么在不編寫大量代碼和附加刪除記錄的情況下幾乎不可能改變某一條記錄的鍵和數(shù)據(jù)庫內(nèi)所有關(guān)聯(lián)的記錄。而這一過程往往錯(cuò)誤叢生所以應(yīng)該盡量避免。

— ljboast

9. 可選鍵有時(shí)可做主鍵

記住,查詢數(shù)據(jù)的不是機(jī)器而是人。假如你有可選鍵,你可能進(jìn)一步把它用做主鍵。那樣的話,你就擁有了建立強(qiáng)大索引的能力。這樣可以阻止使用數(shù)據(jù)庫的人不得不連接數(shù)據(jù)庫從而恰當(dāng)?shù)倪^濾數(shù)據(jù)。在嚴(yán)格控制域表的數(shù)據(jù)庫上,這種負(fù)載是比較醒目的。如果可選鍵真正有用,那就是達(dá)到了主鍵的水準(zhǔn)。

我的看法是,假如你有可選鍵,比如國(guó)家表內(nèi)的state_code,你不要在現(xiàn)有不能變動(dòng)的唯一鍵上創(chuàng)建后續(xù)的鍵。你要做的無非是創(chuàng)建毫無價(jià)值的數(shù)據(jù)。比如以下的例子:

Select count(*) from address, state_ref where

address.state_id = state_ref.state_id and state_ref.state_code = 'TN'

我的做法是這樣的:

Select count(*) from address where and state_code = 'TN'

如你因?yàn)檫^度使用表的后續(xù)鍵建立這種表的關(guān)聯(lián),操作負(fù)載真得需要考慮一下了。

— Stocker

10. 別忘了外鍵

大多數(shù)數(shù)據(jù)庫索引自動(dòng)創(chuàng)建的主鍵字段。但別忘了索引外鍵字段,它們?cè)谀阆氩樵冎鞅碇械挠涗浖捌潢P(guān)聯(lián)記錄時(shí)每次都會(huì)用到。還有,不要索引memo/notes 字段而且不要索引大型文本字段(許多字符),這樣做會(huì)讓你的索引占據(jù)大量的數(shù)據(jù)庫空間。。

— gbrayton

it知識(shí)庫數(shù)據(jù)庫設(shè)計(jì)技巧系列(三)——選擇鍵和索引,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产成人精品自拍 | 无码一区二区在线欧洲 | 国产成人久久婷婷精品流白浆 | 美女被男人撕衣舔胸 | 97资源站超碰在线视频 | 好男人在线观看免费视频WWW | 亞洲人妻AV無碼在線視頻 | 披黑人猛躁10次高潮 | 国产亚洲国际精品福利 | 一区二区三区无码高清视频 | 超碰在线线公开免费视频 | 美女网站免费看 | 日本红怡院亚洲红怡院最新 | 综合色就爱涩涩涩综合婷婷 | 国产综合18久久久久久软件 | 十分钟免费视频大全在线 | 国产一区二区三区内射高清 | 免费国产午夜理论不卡 | 人妻中文字幕无码系列 | 欧美国产精品久久久乱码 | 最近的中文字幕2019国语 | 中文字幕日本一区 | 嗯啊快停下我是你老师啊H 嗯啊快拔出来我是你老师视频 | 国产精品18久久久久久欧美网址 | 99福利视频 | 午夜向日葵视频在线观看 | 蜜柚免费视频高清观看在线 | 欧美不卡一区二区三区 | 国产全部视频列表支持手机 | 亚洲成色WWW久久网站夜月 | 男女午夜性爽快免费视频不卡 | 亚洲国产成人精品久久久久 | 蝴蝶中文综合娱乐网2 | 无码欧美毛片一区二区三在线视频 | 两个人在线观看的视频720 | 久久伊人电影 | 日韩在线看片中文字幕不卡 | 亚洲国产在线2o20 | 久久精品亚洲AV中文2区金莲 | 久久亚洲AV成人无码国产漫画 | 亚洲视频无码中字在线 |