1. 程式人生 > >菠菜源碼下載與優化sql方案

菠菜源碼下載與優化sql方案

方案 策略 行數據 寫入 特點 href sele 優化策略 女性

為什麽使用索引:
1、索引大大減少了存儲引擎需要的掃描數據量?
2、幫助我們進行排序避免使用的臨時表?
3、把隨機IO變為順序IO 菠菜源碼搭建QQ:2152876294 網址diguaym.com
索引是不是越多越好:
1、索引增加寫入的成本?
2、太多索引會增加查詢優化器的選擇時間
索引是在存儲引擎層的作用:
B-tree索引的特點:
1、常見索引,默認的索引,葉子鍵遍歷?
2、以B+樹的結構存儲數據?
3、能加快數據的查詢速度?
4、適合進行範圍查找
什麽情況下可以使用B樹索引:
1、全值匹配的查詢?
2、匹配最左前綴的查詢–聯合索引,日期和某個字段?
3、匹配列前綴查詢例如 order link “984%”?
4、匹配範圍值查詢-order>’987897’ and order <’999978’?
5、精確匹配左前列並範圍匹配另外一列?
5、只訪問索引的查詢?
6、order by也可以使用B樹索引
B樹索引的限制:
1、如果不是按照索引的最左列開始查找,則無法使用索引?
2、使用索引的時候不能跳過索引中的列?
3、NOT in和 <>操作無法使用索引的?
4、如果查詢中有某個列的範圍查詢,則其右邊所有列都無法使用索引
Hash索引的特點:
需要進行兩次查詢,先查HASH碼,再找到相關的行數據,因為存儲在內存中,所以並不影響?
1、Hash索引是基於HASH表實現的,只有查詢條件精確匹配HASH索引中的所有列時,才能使用到HASH索引(也就是只能用到等值查詢,範圍查詢不能用到)?
2、對於HASH索引中的所有列,存儲引擎都會為每一行計算一個HASH碼,HASH索引中的存儲就是HASH碼
HASH索引的限制:
1、HASH索引必須使用二次查找?
2、HASH索引無法用於排序?
3、HASH索引無法用於範圍查找?
4、HASH索引部分查詢?
5、不要使用到選擇性很差的字段(例如男女性別),造成大量HASH重復,×××重復比較少可以建立HASH索引?
6、根據第5條明白存在HASH沖突
HASH在innodb是自適應的
HASH在innodb是自適應的,查看是否開啟自適應?
mysql> show variables like ‘innodb_adaptive_hash_index’;
索引優化策略:
1、索引列不能使用表達式或者函數?
例如:select …. from product where to_days(a_day)-to_days(b_day)<=30?
使用到了to_days函數,是不行的?
改下為 select …. from product a_day<=data_add(current_date,interval 30 day )?
2、前綴索引和索引列的選擇性—字符串很長的情況下,會降低索引的效果,字符串前綴建立索引?

菠菜源碼下載與優化sql方案