2009-11-17 53 views
0

有時候,在創建SQL查詢時,人們假設索引應該在獲取數據時被引擎使用。但不總是。如果某些必需品不存在,發動機可能會逐一處理這些行。 這是一種方式(用於sqlite)確切知道該索引已被使用?我的意思是在案件比ROWID 從表順序 SELECT ROWID,因爲如果我們用一個簡單的基礎測試的問題也出現更加複雜,時間測量不會幫助,它們之間的差別將是最小的。是否知道索引是否用於某個特定的sql查詢

回答

7

大多數DBMS提供解釋他們如何執行查詢的能力。對於SQLite,您在SQL語句前面加上單詞EXPLAIN

因此,對於容易出現的情況:

EXPLAIN SELECT * FROM TableName 

會告訴你是否使用了索引。

請注意,查詢計劃可能隨着數據庫中數據數量和性質的變化而改變。引擎可以選擇使用另一個索引,具體取決於表格大小以及索引列中不同值的數量和分佈。因此,您使用測試數據庫從EXPAIN獲得的信息可能不會反映真正的查詢計劃在充滿「真實」數據的數據庫上。

相關問題