1.1、什麼時候使用索引?
(1)、以查詢的關鍵字為基礎,表中行隨機排序;
(2)、包含的列數 相對較少的表;
(3)、表中大多數的查詢包含相對簡單的where從句;
(4)、快取命中率低,而且也不用作業系統許可權;
1.2、選擇什麼樣的索引列和表示式?
(1)、where從句頻繁使用的關鍵字;
(2)、重複性少的關鍵字;
(3)、避免使用頻繁修改的列作為索引列;
(4)、避免使用包含操作符或函式的where從句中的關鍵字作為索引列;
1.3、多列索引也叫做復合索引,什麼情況下使用復合索引主列?
(1)、一些關鍵字在where語句中使用頻率高;
(2)、幾個查詢 都選擇相同的關鍵字集合;
1.4、避免全表掃瞄大表,全表掃瞄是不加任何條件或沒有使用索引的sql語句,下邊的情況可以使用:
(1)、查詢的表沒有建立索引;
(2)、需要返回所有的行;
(3)、帶有like並且使用"%",這種語句就是全表掃瞄;
(4)、帶有is null 、is not null 或!= 這類語句也會導致全表的掃瞄;
其實使用索引的語句也未必就是最好的,舉個栗子:一張小表,只有三五行資料,一次io就可以完成全表的檢索,然而如果現在還用索引的話,就需要進行兩次的io,所以,當表比較小的時候,進行全表掃瞄就是最優的。
如何合理使用SQL索引
1.合理使用索引 索引是資料庫中重要的資料結構,它的根本目的就是為了提高查詢效率。現在大多數的資料庫產品都採用ibm最先提出的isam索引結構。索引的使用要恰到好處,其使用原則如下 在經常進行連線,但是沒有指定為外來鍵的列上建立索引,而不經常連線的字段則由優化器自動生成索引。在頻繁進行排序或分組 即...
MySQL Query 的優化 合理設計並利用索引
索引,可以說是資料庫相關優化尤其是在 query 優化中最常用的優化手段之一了。但是很多人在大部分時候都只是大概了解索引的用途,知道索引能夠讓 query 執行的更快,而並不知道為什麼會更快。尤其是索引的實現原理,儲存方式,以及不同索引之間的區別等就更不是太清楚了。正因為索引對我們的 query 效...
sql優化 使用索引
專案中使用了大量的sql,對於查詢sql,如果沒有使用索引會對查詢速度造成很大的影響,例如如下sql select a.name,b.id from tablea a join tableb b on a.id b.other id where a.name test and b.pin 123 a...