亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > 文庫 > 正文

數據庫設計指南之選擇鍵和索引

2024-09-07 22:12:26
字體:
來源:轉載
供稿:網友

鍵和索引對數據庫的性能有著很大的影響,設計好的鍵和索引可以提高數據庫的查詢與更新性能。否則就會降低效率。本文從10個方面講解了數據庫設計時鍵與索引的設計方法。

第3 部分 選擇鍵和索引

1. 數據采掘要預先計劃

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

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

2. 使用系統生成的主鍵

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

采用系統生成鍵作為主鍵還有一個優點:當你擁有一致的鍵結構時,找到邏輯缺陷很容易。

3. 分解字段用于索引

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

4. 鍵設計4 原則

(1)為關聯字段創建外鍵。

(2)所有的鍵都必須唯一。

(3)避免使用復合鍵。

(4)外鍵總是關聯唯一的鍵字段。

5. 別忘了索引

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

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

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

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

7. 不要把社會保障號碼(SSN)選作鍵

永遠都不要使用SSN 作為數據庫的鍵。除了隱私原因以外,須知政府越來越趨向于不準許把SSN 用作除收入相關以外的其他目的,SSN 需要手工輸入。永遠不要使用手工輸入的鍵作為主鍵,因為一旦你輸入錯誤,你唯一能做的就是刪除整個記錄然后從頭開始。

上個世紀70 年代我還在讀大學的時候,我記得那時SSN 還曾被用做學號,當然盡管這么做是非法的。而且人們也都知道這是非法的,但他們已經習慣了。后來,隨著盜取身份犯罪案件的增加,我現在的大學校園正痛苦地從一大攤子數據中把SSN 刪除。

8. 不要用用戶的鍵

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

(1)在創建記錄之后對用戶編輯字段的行為施加限制。假如你這么做了,你可能會發現你的應用程序在商務需求突然發生變化,而用戶需要編輯那些不可編輯的字段時缺乏足夠的靈活性。當用戶在輸入數據之后直到保存記錄才發現系統出了問題他們該怎么想?刪除重建?假如記錄不可重建是否讓用戶走開?

(2)提出一些檢測和糾正鍵沖突的方法。通常,費點精力也就搞定了,但是從性能上來看這樣做的代價就比較大了。還有,鍵的糾正可能會迫使你突破你的數據和商業/用戶界面層之間的隔離。

所以還是重提一句老話:你的設計要適應用戶而不是讓用戶來適應你的設計。

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

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

如果索引完整性規則施加到表一級,那么在不編寫大量代碼和附加刪除記錄的情況下幾乎不可能改變某一條記錄的鍵和數據庫內所有關聯的記錄。而這一過程往往錯誤叢生所以應該盡量避免。

9. 可選鍵有時可做主鍵

記住,查詢數據的不是機器而是人。

假如你有可選鍵,你可能進一步把它用做主鍵。那樣的話,你就擁有了建立強大索引的能力。這樣可以阻止使用數據庫的人不得不連接數據庫從而恰當的過濾數據。在嚴ge控制域表的數據庫上,這種負載是比較醒目的。如果可選鍵真正有用,那就是達到了主鍵的水準。

我的看法是,假如你有可選鍵,比如國家表內的state_code,你不要在現有不能變動的唯一鍵上創建后續的鍵。你要做的無非是創建毫無價值的數據。比如以下的例子:

10. 別忘了外鍵

大多數數據庫索引自動創建的主鍵字段。但別忘了索引外鍵字段,它們在你想查詢主表中的記錄及其關聯記錄時每次都會用到。還有,不要索引memo/notes 字段而且不要索引大型文本字段(許多字符),這樣做會讓你的索引占據大量的數據庫空間。

第一部分 數據庫設計之前          第二部分  設計表和字段        第四部分  保證數據的完整性

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品久久久久久久久| 亚洲一区二区精品| 日韩在线观看免费全集电视剧网站| 国产精品久久久久久久久久新婚| 97精品国产97久久久久久春色| 日韩在线一区二区三区免费视频| 欧美亚洲视频在线观看| 久久精品国产成人精品| 久久中文字幕在线| 国产精品小说在线| 久久频这里精品99香蕉| 欧美日韩亚洲一区二区三区| 成人动漫网站在线观看| 亚洲国产精品国自产拍av秋霞| 久久91亚洲人成电影网站| 国产中文日韩欧美| 91成人在线视频| 亚洲精品久久久久久久久久久久| 黑人欧美xxxx| 91精品视频在线播放| 亚洲高清一区二| 国产一区二区三区在线免费观看| 日韩最新中文字幕电影免费看| 国产区精品在线观看| 国产精品户外野外| 欧美成年人网站| 欧美性猛交丰臀xxxxx网站| 国产精品第3页| 国产91久久婷婷一区二区| 亚洲春色另类小说| 一个人看的www欧美| 国产欧美日韩专区发布| 激情av一区二区| 中文字幕亚洲字幕| 色偷偷噜噜噜亚洲男人| 亚洲国产精品成人va在线观看| 性视频1819p久久| 欧美激情一区二区久久久| 岛国av一区二区在线在线观看| 懂色av中文一区二区三区天美| 久久久久久久网站| 国产一区二区三区高清在线观看| 91高清免费在线观看| 日韩在线视频播放| 亚洲人成在线一二| 97高清免费视频| 久久成人av网站| 91精品在线国产| 欧洲美女免费图片一区| 亚洲自拍中文字幕| 亚洲国产美女久久久久| 在线成人激情黄色| 欧美日韩视频在线| 在线观看日韩欧美| 国产精品一区二区三区久久久| 九九热精品在线| 91产国在线观看动作片喷水| 亚洲www永久成人夜色| 国产精品美女在线观看| 亚洲天堂一区二区三区| 久久伊人91精品综合网站| 欧美另类暴力丝袜| 中文字幕欧美亚洲| 91精品视频在线免费观看| 国产精品网红直播| 中文字幕日韩电影| 欧美精品少妇videofree| 亚洲欧美中文字幕在线一区| 在线观看欧美日韩国产| 秋霞成人午夜鲁丝一区二区三区| 欧美精品在线播放| wwwwwwww亚洲| www.亚洲一区| 久久精品人人做人人爽| 5566日本婷婷色中文字幕97| 日本电影亚洲天堂| 亚洲xxxx做受欧美| 亚洲一区二区自拍| 国产精品青青在线观看爽香蕉| 国产色婷婷国产综合在线理论片a| 欧美成人自拍视频| 一本色道久久综合狠狠躁篇的优点| 91免费高清视频| 日韩中文第一页| 欧美天堂在线观看| 亚洲美女性生活视频| 久久夜色精品国产欧美乱| 亚洲欧美日韩一区二区在线| 精品国产一区二区三区久久狼黑人| 日韩精品电影网| 亚洲福利在线视频| 国产精品久久久久久久久男| 97香蕉超级碰碰久久免费的优势| 日韩激情av在线播放| 亚洲黄在线观看| 性欧美亚洲xxxx乳在线观看| 成人在线精品视频| 国自产精品手机在线观看视频| 中文字幕少妇一区二区三区| 欧美日韩国产色| 欧美激情一区二区三级高清视频| 日韩国产精品亚洲а∨天堂免| 午夜精品蜜臀一区二区三区免费| 欧日韩不卡在线视频| 日韩欧美在线国产| 亚洲精品视频在线观看视频| 成人午夜激情网| 亚洲第一网站男人都懂| 国产精品女人网站| 国产精品久久久久久久久男| 亚洲精品自产拍| 国产欧美精品xxxx另类| 欧美一区视频在线| 91欧美精品成人综合在线观看| 日韩av最新在线| 国产精品色婷婷视频| 91久热免费在线视频| 丰满岳妇乱一区二区三区| 亚洲色图偷窥自拍| 欧美性xxxxxxxxx| 中文字幕亚洲一区二区三区| 久久久久久国产三级电影| 日韩电影中文字幕av| 亚洲丁香婷深爱综合| 国产欧美日韩中文字幕| 国产一区二区三区直播精品电影| 高潮白浆女日韩av免费看| 亚洲欧美日韩成人| 97久久超碰福利国产精品…| 欧美性猛交xxxx免费看漫画| 中文字幕日韩精品在线| 亚洲午夜久久久影院| 欧美日韩综合视频网址| 国产999在线| 成人在线视频网| 亚洲精品电影网| 中文字幕在线日韩| 欧美另类极品videosbest最新版本| 欧美裸体xxxx极品少妇软件| 操人视频在线观看欧美| 日韩福利伦理影院免费| 欧美午夜xxx| 欧美激情亚洲国产| 久久久精品视频在线观看| 国产精品视频久久久| 成人h片在线播放免费网站| 久久精品视频中文字幕| 日韩免费看的电影电视剧大全| 日韩国产高清视频在线| 国产精品亚洲视频在线观看| 久久久亚洲国产天美传媒修理工| 日韩精品极品毛片系列视频| 8090理伦午夜在线电影| 国产亚洲激情视频在线| 亚洲91精品在线观看| 中文字幕国产精品| 久久视频在线免费观看| 国产欧美最新羞羞视频在线观看| 国产精品久久久久一区二区| 中文字幕欧美日韩va免费视频| 这里只有精品在线观看| 91久久精品视频| 久久成人18免费网站| 亚洲精品自拍第一页|