我的查詢從15秒變爲0.05秒的時候我在下面的查詢中刪除ORDER BY:MySQL查詢訂單緩慢的,因爲通過與存儲功能
簡化版本:
SELECT field1, fiedl2, field 3,
FUNC1(1, 2) AS score1,
FUNC2(1, 2) AS score2,
FUNC3(1, 2) AS score3,
FUNC4(1, 2) AS score4
FROM table
WHERE field1 = 1
ORDER BY (score1 * 1 + score2 * 2 + score3 * 2 + score4 * 4) DESC;
我有幾個存儲函數可以計算子分數。除了我必須根據總分排序結果。在ORDER BY中,我使用* 2
爲子分數增加一些權重以影響總分。
我使用MySQL 5.6.13
有沒有人有一個想法,我怎麼可以使ORDER BY,但不能慢下來? 像是有可能和存儲score#
字段和總結它們?
謝謝!
好的,我找到了一些東西。 'score#'是對存儲函數的引用。 ORDER BY是排序方法,它對這些引用進行了大量的比較。所以存儲的函數將被執行很多次。有沒有辦法將存儲函數的返回值設置爲靜態字段? – pascalvgemert