當乙個表的資料量較大時,我們需要對這個表做優化,除了分表分庫以外,最常見的就是索引優化了,那做索引優化的原則是什麼呢?
在不考慮排序,分組時,也就是sql語句中只有where的時候,多列並查如
select * from payment where staff_id=? and customer_id=?
的索引原則,誰的數量多,把誰作為最左索引,最左索引在mysql的b+樹結構裡的位置是很重要的。
select count(distinct staff_id)/count(*) staff_id_selectivity,count(disctinct customer_id)/count(*) customer_id_selectivity,count(*) from payment\g
加入執行結果為 staff_id_selectivity:0.0001
customer_id_selectivity:0.0373
count(*):16049
很明顯customer_id的佔比大,結果為
alter table payment add key(customer_id,staff_id)
mysql 優化原則
2.查詢需要用到的字段。不要查詢表裡面的所有沒用的字段。原因是使用者端用sql語句查詢的時候,把所有沒有用到的字段也查詢出來之後。伺服器端返回的資料報就會顯示很大。影響返回速度。3.多表查詢的時候,是小表驅動大表。這樣才會更高效。4.詳細mysql原理分析位址可參考位址 5.索引優化 mysql索引...
mysql語句優化原則 MySQL語句優化的原則
1 使用索引來更快地遍歷表。預設情況下建立的索引是非群集索引,但有時它並不是最佳的。在非群集索引下,資料在物理上隨機存放在資料頁上。合理的索引設計要建立在對各種查詢的分析和 上。一般來說 a.有大量重複值 且經常有範圍查詢 和order by group by發生的列,可考慮建立群集索引 b.經常同...
mysql索引優化原則 MySQL 索引優化原則
索引優化原則 1 最左字首匹配原則,聯合索引,mysql會從做向右匹配直到遇到範圍查詢 3 and d 4 如果建立 a,b,c,d 順序的索引,d是用不到索引的,如果建立 a,b,d,c 的索引則都可以用到,a,b,d的順序可以任意調整。2 和in可以亂序,比如a 1 and b 2 and c ...