索引優化策略

索引列上不能使用表達式或函數緩存

select….from product函數

where to_days(out_date)-to_days(current_date)<=30;優化

索引優化策略spa

    • select….from product out_date<=date_add(current_data,interval 30 day);

前綴索引和索引列的選擇性orm

create index index_name on table (col_name(n));排序

索引的選擇性是不重複的索引值和表的記錄數的比值。索引

聯合索引it

如何選擇索引列的順序io

常常會被使用到的列優先table

選擇性高的列優先

寬度小的列優先

覆蓋索引

優勢

能夠優化緩存,減小磁盤IO操做;

能夠減小隨機IO,隨機IO操做變爲順序IO操做;

能夠避免對Innoddb主鍵索引的二次查詢;

能夠避免MyISAM表進行系統調用;

沒法使用覆蓋索引的狀況

存儲引擎不支持覆蓋索引;

查詢中使用了太多的列;

使用了雙%號的like查詢;

使用索引來優化查詢

使用索引掃描來優化排序

經過排序操做

按照索引順序掃描數據

使用索引掃描來優化排序

索引的列順序和order by子句的順序徹底一致;

索引中全部列的方向(升序,降序)和order by 子句徹底一致;

order by中的字段所有在關聯表的第一張表中;

模擬Hash索引優化查詢

只能處理鍵值的全值匹配查找;

所使用的Hash函數決定着索引鍵的大小;

利用索引優化鎖

索引能夠減小鎖定的行數

索引能夠加快處理速度,同時也加快了鎖的釋放

索引的維護和優化

刪除重複和冗餘的索引

查找未被使用過的索引

SELECT object_schema,object_name,index_name,b.`TABLE_ROWS` FROM performance_schema.table_io_waits_summary_by_index_usage a JOIN information_schema.tables b ON

a.`OBJECT_SCHEMA`=b.`TABLE_SCHEMA` AND

a.`OBJECT_NAME`=b.`TABLE_NAME`

WHERE index_name IS NOT NULL

AND count_star=0

ORDER BY object_schema,object_name;

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

analyze table  table_name

optimize table table_name(使用不當會致使鎖表)

相關文章
相關標籤/搜索