mysql - where 子句中的计算列 - 性能

标签 mysql performance

由于您不能像这样在 MySQL 的 where 子句中使用计算列:

SELECT a,b,c,(a*b+c) AS d FROM table
WHERE d > n
ORDER by d

你必须使用

SELECT a,b,c,(a*b+c) AS d FROM table
WHERE (a*b+c) > n
ORDER by d

计算(在那个例子中是“(a * b + c)”每行执行一次还是两次?有没有办法让它更快?我觉得奇怪的是可以在列上排序但没有一个 WHERE 子句。

最佳答案

您可以使用 HAVING 来过滤计算列:

SELECT a,b,c,(a*b+c) AS d, n FROM table
HAVING d > n
ORDER by d

请注意,您需要在 SELECT 子句中包含 n 才能正常工作。

关于mysql - where 子句中的计算列 - 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16068662/

相关文章:

php - MySQL 结果 ORDER BY 日期和时间

mysql - 将 Spring 数据源代码移至 JavaConfig,现在得到 ClassNotFoundException

php - 为什么PDO不显示任何结果?

c# - wpf 单选按钮已选中 "Index was out of range. Must be non-negative and less than the size of the collection."

performance - 如何以空间和时间高效的方式填充 Data.Map

ios - 为 ios 开发应用程序我应该支持快速或慢速连接?

MySQL存储过程语法问题

c++ - 如何正确计时 MPI 代码

php - 帮助优化 Postgresql 数据库的查询

.net - 我可以(并且我曾经想要)在.net 中设置最大堆大小吗?