2016-07-14 43 views
0

我有一張桌子,有2個拉赫(200K)行。當我執行查詢時,需要花費太多時間(大約2分鐘)。如果數據低於設定限制,需要太多時間

這是我的查詢: -

SELECT a,b,c,d,@row:="tag1" as tag 
    FROM tableName 
WHERE tagName like "%helloworld|%" 
ORDER BY viewCount desc 
    LIMIT 20; 

helloworld| 2行僅發生。

我想如果數據更改查詢目前的20倍以上,它應該返回20行其他任何行存在。

如何優化此查詢?

+1

運行全表掃描。嘗試全文搜索而不是 –

+1

您需要創建帶有標籤的單獨表格,以便在不使用全掃描的情況下進行過濾。 –

+1

一起嘗試在'tagName'列全文索引用'MATCH AGAINST',即:'WHERE MATCH(標籤名)反對( '的HelloWorld |' IN BOOLEAN MODE)' – mitkosoft

回答

0

你不能像寫入那樣加速。

的WHERE與LIKE子句要求您掃描的每行。它是O(N),其中N =表中的行數。隨着桌面尺寸的增加,它會運行得更慢。

您可以運行查詢,如果你能找到一種方法來解析字符串轉換,你可以插入爲列和索引標記更快。

-1

嘗試這些

  1. 設置索引你的桌子上的搜索領域&然後檢查查詢執行時間
  2. 不知道什麼這裏的觀看次數,但我猜你是用子查詢嘗試讓這個刪除命令語句&然後檢查查詢執行時間
相關問題