MySql如何使用索引(二)

2021-09-12 08:49:42 字數 1711 閱讀 3969

上篇介紹了mysql什麼時候會嘗試使用索引,本文介紹一下我了解的不會使用索引的情況, 仍然使用上次建立好的表

# 不會使用索引

# 會使用索引

例如:name欄位為varchar型別的

select * from test_user where name=1
將不能使用索引,而

select * from test_user where name='1'
可以使用索引

原因是當不同的字段型別比較時,mysql會做引式型別轉換,而 int型別的1可能等於 『01』, '0001』或者 『01.e1』

我們建立的索引順序是

key `idx_name_height_weight` (`name`,`height`,`weight`)
所以使用的時候where子句也不能跳過前乙個聯合索引列

# 比如直接聯合索引的最後一列是不支援的

# 而使用全部索引列做查詢條件是可以的

#是不會使用索引的,可以寫成

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引擎 假設有一...