mysql - 查询优化检查 MySQL 整个数据库中的列是否是最新的

标签 mysql sql query-optimization

我正在尝试查询 mySQL 以检查表中特定列中的值是否已更新。例如,我有一个表,其中有一列保存 max_age 数据。我想检查 max_age 是否更新。

这是我到目前为止所做的,但我有数千万的数据需要处理。我想知道整个数据库有多少数据没有更新。有没有办法优化这个查询?

SELECT Count(a.column1) 
FROM   table1 a 
       INNER JOIN table2 b 
               ON a.column1 = b.column2 
       INNER JOIN table3 c 
               ON b.column2 = c.b.column3 
WHERE  a.max_age <> -1 
       AND a.max_age = ( 2013 - c.birth_year ) 


An example: This example the answer returned is 1 because [max_age = (2013 - birth_year)] in third row.

max_age   2013 - birth_year
34            31
27            25
44            44

最佳答案

表 table2 在您的查询中似乎毫无用处,因为 a.column1 = b.column2b.column2 = b.column3。这意味着a.column1 = c.column3。然后:

SELECT COUNT(a.column1) FROM table1 a
INNER JOIN table2 b ON a.column1 = c.column3
WHERE a.max_age <> -1
AND a.max_age = (2013 - c.birth_year)

另一方面,如果您想进一步优化,您可以强制使用索引来进行查询,甚至创建 View 。

我希望这有用。

关于mysql - 查询优化检查 MySQL 整个数据库中的列是否是最新的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20754035/

相关文章:

php - 如何检查json数据数组是否有返回值

mysql - 关系划分 - MySql - 获取值名称

c++ - SqlDataAdapter 未加载数据表 - C++

c# - 如何将 MY SQL 查询的输出转换为 Access 数据库

sql - OrientDB:如何使用选择查询更新列

SQL 按连续行的 session 对行进行排名

mysql - LEFT JOIN 的位置如何影响查询和优化器?

mysql - 在 HAVING 子句中使用 MAX/MIN 优化查询

mysql - 如何使 MySQL 与 INTEGER 字段和 FLOAT 字段的键相交?

php - Laravel Eloquent 的条件 wherehas