程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 索引優化策略,索引策略

索引優化策略,索引策略

編輯:MySQL綜合教程

索引優化策略,索引策略


在表上創建索引後,如何使用到這些索引需要注意的問題。

 

1.索引列上不能使用表達式或函數。

例如:

select * from users where upper(name)=’ABC';

改成

select * from users where  name=’ABC';

 

2.前綴索引和索引列的選擇性

索引的選擇性越高索引效率越高。

 

3.聯合索引

如何選擇索引列的順序

1.經常會被使用到的列優先

聯合索引的列索引順序是從左到右使用的。

2.選擇性高的列優先

選擇性很差的列不宜放到最左邊。比如狀態列。

3.寬度小的列優先

 

4.覆蓋索引

索引中包含了所有查詢的字段的情況的索引。

優點:

可以優化緩存,減少磁盤IO操作。

可以減少隨機IO 變隨機IO為順序IO操作。

避免對INNODB主鍵索引的二次查詢

可以避免myisam表進行系統調用

無法使用覆蓋索引的情況:

1.存儲引擎不支持覆蓋索引

2.查詢中使用了太多的列。

3.使用了雙%號的like查詢

 

5.使用索引掃描優化排序

  索引的列順序和order by 子句的順序完全一致

索引中所有列的方向(升序和降序)和order by 子句完全一致

order by 中 的字段全部在關聯表中的第一張表中。

 

6.利用索引優化鎖

1.索引可以減少鎖定的行數

2.索引可以加快處理速度,同時加快鎖的釋放。

 

7.刪除重復和冗余的索引

重復的索引:

比如:

primary key(id),unique key (id) ,index (id);

這樣索引就重復了

冗余的索引:

index(name) ,index(name,age) 聯合索引,那麼 index(name) 就冗余了。

 

可以使用工具

pt-duplicate-key-checker –h=localhost 檢查重復索引。

 

查找未被使用過的索引:

 

更新索引統計信息及減少索引碎片

analyze table table_name;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved