索引是資料庫中較常用的優化手段之一,下面讓我們看看索引的分類和使用
索引的儲存分類
索引是在mysql 的儲存引擎層中實現的,而不是在伺服器層實現的。意味著每種儲存引擎的索引都不一定完全相同,也不是所有的儲存引擎都支援所有的索引型別。
下面是三個比較常用的引擎支援的索引型別比較(myisam,memory,innodb)
目前mysql提供了4種索引。
mysql目前不支援函式索引,但是能對列的前面某一部分進行索引,例如title前10個字元進行索引,這個特性可以大大縮小索引檔案的大小,但是字首索引的缺點也比較明顯,就是有排序order by 和 分組 group 不用 操作的時候無法使用字首索引。舉乙個建立字首索引的小例子:
-- 如果存在就刪掉,原本沒有的話執行執行下乙個語句
mysql> drop index idx_title on film;
query ok, 0 rows affected (0.03 sec)
records: 0 duplicates: 0 warnings: 0
mysql> create index idx_title on film(title(10));
query ok, 0 rows affected (0.04 sec)
records: 0 duplicates: 0 warnings: 0
附:hash索引和b-tree索引是比較常用的索引,memory/heap引擎只有在「=「的條件下 才會使用索引。
MySQL優化 SQL及索引優化(二)
對支付時間建立索引 create index idx paydate on payment payment date 查詢 select max payment date from payment 在一條sql中同時查出2006年和2007年電影的數量 優化count 函式 對count函式使用的列...
SQL優化 索引優化
一 發現哪些sql語句有效能問題 開啟mysql慢查詢日誌對sql語句進行監控 show variables like slow query log 檢視是否開啟慢查詢日誌 set global slow query log on 開啟慢查詢日誌 set global log queries not...
SQL優化(SQL 索引)
檢視表定義 show create table users 檢視表的索引 show index from users 你要獲取第乙個表的所有資訊,你說全表掃瞄快呢還是索引掃瞄快呢?所以當你查詢庫 包括left join中的臨時庫 的所有資訊時,資料庫會選擇最優方法 全表掃瞄!s表dept id na...