上篇介紹了mysql什麼時候會嘗試使用索引,本文介紹一下我了解的不會使用索引的情況, 仍然使用上次建立好的表# 不會使用索引
# 會使用索引
例如:name欄位為varchar型別的
將不能使用索引,而select * from test_user where name=1
可以使用索引select * from test_user where name='1'
原因是當不同的字段型別比較時,mysql會做引式型別轉換,而 int型別的1可能等於 『01』, '0001』或者 『01.e1』
我們建立的索引順序是
所以使用的時候where子句也不能跳過前乙個聯合索引列key `idx_name_height_weight` (`name`,`height`,`weight`)
# 比如直接聯合索引的最後一列是不支援的
# 而使用全部索引列做查詢條件是可以的
#是不會使用索引的,可以寫成
select * from test_user where `height`=160-10
# 就能夠使用索引了
在索引使用方面mysql本身幫我們做了很多優化,有時候不一定會按照我們的想法去使用索引,接下來還需要探索MySQL如何使用索引
概念 索引用於快速查詢具有特定列值的行。沒有索引,mysql必須從第一行開始,然後通讀整個表以找到相關的行。表越大,耗費時間越多。如果表中有相關列的索引,mysql可以快速確定要在資料檔案中間查詢的位置,而不必檢視所有資料。這比順序讀取每一行要快得多。大多數mysql索引 primary key,u...
Mysql索引使用 索引優化(二)
一 什麼情況下適合使用索引?欄位的數值有唯一性的限制,比如使用者名稱,可以用唯一索引或者主鍵索引 頻繁作為 where 查詢條件的字段,尤其在資料表大的情況下 需要經常 group by 和 order by 的列 索引就是讓資料按照某種順序進行儲存或檢索,因此當我們使用 group by 對資料進...
MySql如何使用索引 一
我們都知道在 mysql 中使用索引可以提高查詢效率,但有時候真正執行sql查詢的時候卻沒有按照我們的預想使用索引,而是全表掃瞄,導致有慢sql影響了整個 的效率,甚至導致 崩潰,所以我們需要了解mysql是如何選擇使用索引的,以便建立合適的索引 本文基於mysql5.7,innodb引擎 假設有一...