搜尋

首頁  >  問答  >  主體

索引可用但仍未使用-MySQL

我們已經建立了一個索引,特別是針對一個查詢,但我發現該查詢需要 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粉668019339P粉668019339233 天前420

全部回覆(1)我來回復

  • P粉232793765

    P粉2327937652024-04-01 09:01:20

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

    • 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))

    回覆
    0
  • 取消回覆