當前位置:編程學習大全網 - 源碼下載 - 數據庫基礎:講解MySQL索引的概念及數據庫索引的應用[2]

數據庫基礎:講解MySQL索引的概念及數據庫索引的應用[2]

 五 索引分類

  直接創建索引和間接創建索引

 直接創建索引 CREATE INDEX mycolumn_index ON mytable (myclumn)

 間接創建索引 定義主鍵約束或者唯壹性鍵約束 可以間接創建索引

  普通索引和唯壹性索引

 普通索引 CREATE INDEX mycolumn_index ON mytable (myclumn)

 唯壹性索引 保證在索引列中的全部數據是唯壹的 對聚簇索引和非聚簇索引都可以使用

 CREATE UNIQUE COUSTERED INDEX myclumn_cindex ON mytable(mycolumn)

  單個索引和復合索引

 單個索引 即非復合索引

 復合索引 又叫組合索引 在索引建立語句中同時包含多個字段名 最多 個字段

 CREATE INDEX name_index ON username(firstname lastname)

  聚簇索引和非聚簇索引(聚集索引 群集索引)

 聚簇索引 物理索引 與基表的物理順序相同 數據值的順序總是按照順序排列

 CREATE CLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn) WITH

 ALLOW_DUP_ROW(允許有重復記錄的聚簇索引)

 非聚簇索引 CREATE UNCLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn)

 六 索引的使用

  當字段數據更新頻率較低 查詢使用頻率較高並且存在大量重復值是建議使用聚簇索引

  經常同時存取多列 且每列都含有重復值可考慮建立組合索引

  復合索引的前導列壹定好控制好 否則無法起到索引的效果 如果查詢時前導列不在查詢條件中則該復合索引不會被使用 前導列壹定是使用最頻繁的列

  多表操作在被實際執行前 查詢優化器會根據連接條件 列出幾組可能的連接方案並從中找出系統開銷最小的最佳方案 連接條件要充份考慮帶有索引的表 行數多的表;內外表的選擇可由公式 外層表中的匹配行數*內層表中每壹次查找的次數確定 乘積最小為最佳方案

  where子句中對列的任何操作結果都是在sql運行時逐列計算得到的 因此它不得不進行表搜索 而沒有使用該列上面的索引;如果這些結果在查詢編譯時就能得到 那麽就可以被sql優化器優化 使用索引 避免表搜索(例 select * from record where substring(card_no )=

 && select * from record where card_no like % )任何對列的操作都將導致表掃描 它包括數據庫函數 計算表達式等等 查詢時要盡可能將操作移至等號右邊

  where條件中的 in 在邏輯上相當於 or 所以語法分析器會將in ( ′ ′)轉化為column= ′ or column= ′來執行 我們期望它會根據每個or子句分別查找 再將結果相加 這樣可以利用column上的索引;但實際上它卻采用了 or策略 即先取出滿足每個or子句的行 存入臨時數據庫的工作表中 再建立唯壹索引以去掉重復行 最後從這個臨時表中計算結果 因此 實際過程沒有利用column上索引 並且完成時間還要受tempdb數據庫性能的影響 in or子句常會使用工作表 使索引失效;如果不產生大量重復值 可以考慮把子句拆開;拆開的子句中應該包含索引

  要善於使用存儲過程 它使sql變得更加靈活和高效

lishixinzhi/Article/program/MySQL/201311/29603

  • 上一篇:合成孔徑雷達回波數據處理MATLAB程序
  • 下一篇:承德旅行有哪些商場值得壹逛?
  • copyright 2024編程學習大全網