mysql b-tree 索引下聯合索引的已排序的測試方案

來源:互聯網
上載者:User

標籤:sea   慢查詢   方案   聯合   如何   cti   sel   alert   mysq   

使用聯合索引需要注意的列順序
比如在使用
select * from user where x=1 and y=2;
的時候,應該需要建立的索引可能是 add key(x,y)
如何確定索引的順序
一般經驗而言
可以使用
select count(distinct x)/count(x) as x_selectivity,
count(distinct y)/count(y) as x_selectivity,
count(*),
from user;
************************row1***************************
x_selectivity: 0.0001
y_selectivity: 0.0312
count(*) : 16022

在x中的選擇性越高,所以可以放在第一列
alert table user add key(x,y);

 

另外可以在曆史的慢查詢中找到類似的進行最佳化

比如
select * from user where x=1 and y=2;

select sum(x=1),sum(y=2) from user\G;
******************row1**********************************
sum(x=1): 7992
sum(y=2): 30

y的選擇性會更高一些,可以放在第一列

然後看看y=2 對應的x列的選擇性
select sum(x=1) from user where y=2
******************row1**********************************
sum(x=1): 17

但是有可能mysql存在查詢不公平的情況,伺服器的整體效能可能更糟糕,,所以需要提取一下最差的查詢進行這項的查詢工作

這類工作被某些最佳化極客geek稱為sarg。這是“可搜尋參數(searchable argument)”的縮寫。

mysql b-tree 索引下聯合索引的已排序的測試方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.