2013-12-24 1 views
0

Я пытаюсь выполнить запрос mySQL, чтобы проверить, обновлено ли значение в определенном столбце таблицы. Например, у меня есть таблица со столбцом, в котором хранятся данные max_age. Я хочу проверить, обновляется ли max_age.Query Optimization, чтобы проверить, обновлен ли столбец во всей базе данных MySQL

Это то, что я сделал до сих пор, но у меня есть десятки миллионов данных. Я хочу знать, сколько данных не обновляется из всей базы данных. Есть ли способ оптимизировать этот запрос?

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 
+0

@GordonLinoff - Извините. Мне пришлось корректировать фактический запрос, поскольку оригинал был немного сложным. – Cryssie

ответ

0

В таблице table2, кажется бесполезным в запросе, так как a.column1 = b.column2 и b.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.

Надеюсь, это полезно.

Смежные вопросы