mysql 索引 create_time 加explain關鍵字是否走索引
SELECT * FROM t_user WHERE email='[email protected]'; --1.725 --加email索引之後 0.003
SELECT * FROM t_user WHERE email='[email protected]' LIMIT 1; 0.001 --加email索引之後 0.002
結論:使用者資料量很大的情況下 如果查詢加了limit 無索引 根據唯一列查詢 加索引和不加索引 查詢差距不大 會走主鍵 聚集索引 只要到上千萬或是上億的資料的時候才會有影響
儘量使用者唯一的欄位查詢會很快
--按時間降序全表查詢 不加limit
SELECT * FROM t_user order by create_time desc --11.184
SELECT * FROM t_user order by create_time desc limit 1,10 --加limit 2.144
結論:在500萬測試資料,沒有時間索引的況下,直接order by create_time 會全表掃描 不建議如此寫會拖垮資料庫 必須用到降序的時候一定加上limit 限制返回條數
--建立create_time 索引之後
SELECT * FROM t_user order by create_time desc --11.156
SELECT * FROM t_user order by create_time desc limit 1,10 0.002
結論:建立create_time 時間索引 但是 直接order_by 時間 還是會導致全表掃描,加不加索引沒用,所以必須加上limit 受影響行數 才會走索引 explain SELECT * FROM t_user order by create_time desc limit 1,10 0.002 語句加 explain 檢視是否走索引