索引可用但仍未使用-MySQL
P粉668019339
P粉668019339 2024-03-31 09:51:35
0
1
418

我們已經建立了一個索引,特別是針對一個查詢,但我發現該查詢需要 5 到 6 秒的時間來執行。我嘗試使用以下查詢來取得未使用的索引,我注意到該索引列在未使用的索引清單中。請建議如何為以下查詢獲得更好的效能。

查詢where子句:WHERE parsedjobdescription IS NOT NULL AND is_updated != 0

索引:KEYidx_jobs_feed_pa​​rsedjobdescription_is_updated(parsedjobdescription(700),is_updated)

未使用的索引:SELECT * FROM sys.schema_unused_indexes;

欄位:parsedjobdescription varchar(50000) DEFAULT NULL is_updated tinyint(1) DEFAULT '0'

#解釋查詢:

可能的鍵:idx_jobs_feed_pa​​rsedjobdescription_is_updated,idx_is_updated

鍵:idx_jobs_feed_pa​​rsedjobdescription_is_updated

金鑰長度:703

行數:1

過濾:50.0

P粉668019339
P粉668019339

全部回覆(1)
P粉232793765

禁止使用索引的兩列的三件事:

  • IS NOT NULL - 一旦達到範圍,其餘欄位將不會被使用。

  • is_updated != 0 -- 這也是一個「範圍」。

  • 索引前綴有問題。

    INDEX(parsedjobdescription(700), ...  -- won't get past that prefix to use anything after it.

如果測試是 is_updated = 1,您可以翻轉索引(或新增另一個索引):

INDEX(is_updated, parsedjobdescription(100))
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板