我有一个简单的表格,我必须提取一些记录。问题是评估函数是一个非常耗时的存储过程,所以我不应该像在这句话中那样调用它两次:
SELECT *, slow_sp(row) FROM table WHERE slow_sp(row)>0 ORDER BY dist DESC LIMIT 10
首先,我想像这样优化:
SELECT *, slow_sp(row) AS value FROM table WHERE value>0 ORDER BY dist DESC LIMIT 10
但由于在评估WHERE子句时未处理“value”,因此无法正常工作。
有没有想过优化这句话?感谢。
答案 0 :(得分:2)
slow_sp有什么作用?要开始优化查询,您应在dist
上添加索引。
要使您的第二个查询有效,请使用HAVING
代替WHERE
。