2010-03-23 86 views
0

我有一个简单的表格,我必须提取一些记录。问题是,评价函数是一个非常耗时的存储过程,所以我不应该来两次在这个句子中这样称呼它:MySQL优化语句

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子句时不会处理“值”。

任何想法来优化这句话?谢谢。

回答

2

slow_sp做什么?要开始优化查询,您应该在dist上添加一个索引。

要使您的第二个查询工作,请使用HAVING而不是WHERE

+0

根据文本语料库中单词的“重要性”,slow_sp返回0到100之间的值。基本上访问一组预先计算的值来确定一个int值。 我会尝试HAVING值。谢谢。 – Ivan 2010-03-23 15:21:27

+0

这是一个MySQL函数,对不对?基本上在包含where语句的每个列上添加索引。如果没有在相关函数中看到查询,我不能再帮忙。 – raveren 2010-03-23 15:32:19

+0

没关系。我忘记了HAVING子句可以提供帮助。现在它正在工作。谢谢! – Ivan 2010-03-23 17:15:07