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/40035796/

相关文章:

python - PyMySQL 频繁读取后抛出 'BrokenPipeError'

php - Joomla Mysql 查询问题

php - AJAX PHP文件上传和解析示例

mysql - 比较两个unix时间戳以查看它们在MySql中是否处于同一日期

ruby - 在 ruby​​ 中定义转换规则的最佳方式是什么?

performance - MongoDB 在计算空值时非常慢(或 {$exists : false})

javascript - 基于 Node mysql 的模块不工作

performance - 使用 FILE_FLAG_NO_BUFFERING 会返回明显的速度增益吗?

ios - 如何发现 OpenGL ES 帧速率是否卡顿 - 没有仪器?

python - 检测元素是否在成对的区间限制内