Индекс MySQL для макс с где - PullRequest
       3

Индекс MySQL для макс с где

0 голосов
/ 09 августа 2011

пытается получить самую последнюю computed_date, где normalized_global_score не равно NULL

SELECT max(`influencer_brand_scores`.computed_date) AS max_computed_date
FROM `influencer_brand_scores` 
WHERE (normalized_global_score IS NOT NULL) 

Этот запрос выполняется вечно, и когда я запускаю объяснение, я получаю:

1 ПРОСТОЙ влияет на

Итак, мой вопрос: добавить индекс для computed_date или составной индекс для normalized_global_score и computed_date, если да, то какой должен быть первым, или это имеет значение?

Ответы [ 2 ]

0 голосов
/ 09 августа 2011

Я бы сначала пошел с

INDEX( normalized_global_score, computed_date )

и, если это не сработало (из-за normalized_global_score, содержащего NULL), создайте новый столбец BOOLEAN с именем normalize_gobalcolumn_score_is_computed и индексом:

INDEX( normalize_gobalcolumn_score_is_computed, computed_date )

и в вашем запросе заменить normalized_global_score IS NOT NULL на normalize_gobalcolumn_score_is_computed = TRUE.

0 голосов
/ 09 августа 2011
ALTER TABLE `influencer_brand_scores` 
    ADD INDEX `ibs_cindex` (`normalized_global_score`, `computed_date`);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...