CRI*_*ion 5 mysql select where-clause having-clause
我有一个viewX基于一些表的连接的view():
当我使用时WHERE,查询被延迟,处理器使用率达到50%,最后我需要关闭mysqld.exe服务并重新启动以尝试再次解决问题.
当我使用时HAVING,查询执行完美而快速,我得到结果,一切准备就绪.
该查询与此类似:
SELECT * FROM viewX WHERE column_of_view = 'foo'
SELECT * FROM viewX HAVING column_of_view = 'foo'
Run Code Online (Sandbox Code Playgroud)
怎么了?
我找到的解决方案是做这样的事情:
SELECT * FROM (SELECT * FROM viewX) as T WHERE column_of_view = 'foo'
SELECT * FROM (SELECT * FROM viewX) as T HAVING column_of_view = 'foo'
Run Code Online (Sandbox Code Playgroud)
两种查询工作都很精细,但我觉得这很糟糕!(SELECT*FROM(... viewX)????)
WHERE 用于根据条件过滤查询结果.
HAVING用于对聚合函数的结果应用过滤器.在没有聚合函数的情况下,它的功能与WHERE相同.