我有一個MySQL查詢,我需要優化,儘可能(應低於5秒加載時間,如果可能的話)優化數據庫查詢最多10MIL行作爲結果
查詢如下:
SELECT domain_id, COUNT(keyword_id) as total_count
FROM tableName
WHERE keyword_id IN (SELECT DISTINCT keyword_id FROM tableName WHERE domain_id = X)
GROUP BY domain_id
ORDER BY total_count DESC
LIMIT ...
- X是來自一個輸入
- 域ID和keyword_id被索引
- 數據庫是在本地主機的整數,所以網絡速度應該是最大
WHERE子句中的子查詢最多可以獲得10密耳的結果。另外,對於MySQL來說,看起來真的很難計算COUNT和ORDER BY這個計數。
我試圖混合此查詢與SOLR,但沒有結果,獲得如此高的行數在一次給了硬時間MySQL和SOLR
我正在尋找一個解決方案,具有相同的結果,無論我是否需要使用不同的技術或對此MySQL查詢的改進。
謝謝!
查詢邏輯是這樣的:
我們有一個域,我們正在尋找正在該域名上使用的所有關鍵字(這是子查詢)。然後,我們將所有使用至少一個在第一個查詢中找到的關鍵字(按域分組)的關鍵字與每個關鍵字使用的關鍵字數進行比較,並且我們必須根據所用關鍵字的數量顯示它的有序DESC。
我希望這是有意義的
爲什麼你需要內部查詢你可以在where子句中使用domain_id = x?並在domain_id上添加索引(如果不存在) – shola 2013-03-26 08:19:42
@shola請仔細查看查詢,這是關於相關數據 – GabrielCol 2013-03-26 08:22:58
您能否發佈EXPLAIN? – 2013-03-26 08:25:02