我有,對於10+秒運行此查詢慢的問題:慢MySQL查詢與AS和子查詢
SELECT DISTINCT siteid,
storyid,
added,
title,
subscore1,
subscore2,
subscore3,
(1 * subscore1 + 0.8 * subscore2 + 0.1 * subscore3) AS score
FROM articles
WHERE added > '2011-10-23 09:10:19'
AND (articles.feedid IN (SELECT userfeeds.siteid
FROM userfeeds
WHERE userfeeds.userid = '1234')
OR (articles.title REGEXP '[[:<:]]keyword1[[:>:]]' = 1
OR articles.title REGEXP '[[:<:]]keyword2[[:>:]]' = 1))
ORDER BY score DESC
LIMIT 0, 25
這將基於一個用戶添加到他的帳戶中的網站新聞的列表。排名由分數決定,分數由子分數列構成。
查詢使用filesort並使用PRIMARY和feedid上的索引。的 結果可以解釋:
1 PRIMARY articles
range
PRIMARY,added,storyid
PRIMARY 729263 rows
Using where; Using filesort
2 DEPENDENT SUBQUERY
userfeeds
index_subquery storyid,userid,siteid_storyid
siteid func
1 row
Using where
任何建議,以改善查詢?謝謝。
謝謝。我比較了正則表達式和LIKE,但沒有顯着的收益。結果是成千上萬的故事,所以我不知道我應該加載這些所有的PHP,然後開始訂購。 – SvenV