首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

SQL 查詢效能優化:userDeviceId 欄位加索引即可大幅提升

     編輯:程式設計綜合問答

SQL:SELECT * FROM user r WHERE r.userDeviceId='userDeviceId' ORDER BY r.create_time ASC 每次執行佔用大量資源。核心問題在於 WHERE 條件欄位無索引,導致全表掃描。

優化建議

  1. 在 userDeviceId 建立普通索引:
    CREATE INDEX idx_user_device_id ON user(userDeviceId);
    
  2. create_time 無需加索引:ORDER BY 欄位若非 WHERE 條件,且資料量經 WHERE 過濾後較小,排序開銷可接受。若資料量極大且常按時間範圍查詢,可考慮 複合索引 (userDeviceId, create_time)。
  3. 避免 SELECT *:只查詢必要欄位,減少 I/O 與網路傳輸。
  4. 分頁查詢:若前端分頁,加上 LIMIT offset, size。

驗證效果

EXPLAIN SELECT * FROM user WHERE userDeviceId='xxx' ORDER BY create_time ASC;
-- 應顯示 type=ref, key=idx_user_device_id

加上索引後,查詢速度通常從秒級降至毫秒級。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved