MySql(select function()= 1)vs(function()= 1)查询内部。哪一个更快?

时间:2017-04-18 06:35:14

标签: mysql

假设我在MySql中有一个名为MyFunction(param)的函数。它根据传递的参数计算出的内部条件给出结果为0或1。我希望在我的视图中使用它并根据该条件选择记录。如果我在表中有大约百万条记录,以下哪项会更快地运作 -

.*

两者都很好但不确定哪一个更优化。

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

如果表有数百万条记录,它们都不会运行得更快。原因是一旦在列上应用了函数,它就无法在列上应用索引。理想情况下,以下两个查询都应该为您提供相同的结果,并且两者都应该具有表扫描,而不管索引是否为“sometable.somecolumn”

explain select * from sometable where (MyFunction(sometable.somecolumn)=1)

explain select * from sometable where (select MyFunction(sometable.somecolumn)=1)