Limych / GeniBase

2 stars 2 forks source link

Оптимизация запроса отбора фамилий для индексации #73

Open a-KaDeMi-k opened 9 years ago

a-KaDeMi-k commented 9 years ago

Добавление индекса по датам в таблицу ключей не помогло.

Буду думать, как ускорить этот запрос

SELECT DISTINCT `surname` 
FROM persons AS p
WHERE NOT EXISTS (
SELECT 1 
FROM idx_search_keys AS sk
WHERE p.`id` = sk.`person_id` 
AND sk.`surname_key_type` !=0
AND p.`update_datetime` < sk.`update_datetime` 
AND sk.`update_datetime` > STR_TO_DATE( "2015-02-13", "%Y-%m-%d" ) 
)
ORDER BY `update_datetime`
a-KaDeMi-k commented 9 years ago

Этот тоже не хочет быстро отрабатывать с первого раза, но хотя бы кэшируется

SELECT DISTINCT p.surname
FROM persons AS p
LEFT OUTER JOIN idx_search_keys AS sk ON ( p.id = sk.person_id ) 
WHERE sk.surname_key_type = 0
OR sk.update_datetime < STR_TO_DATE( "2015-03-04", "%Y-%m-%d" ) 
OR sk.update_datetime < p.update_datetime
OR sk.person_id IS NULL
ORDER BY p.update_datetime
Limych commented 9 years ago

А где этот запрос используется? Если в обновляторе, то смысла в кэшировании нет.

a-KaDeMi-k commented 9 years ago

В индексаторе - в db_update

Limych commented 9 years ago

Ну я и говорю - бесполезная правка...

a-KaDeMi-k commented 9 years ago

Да я и не пишу, что надо так править. Просто на память, что такой вариант запроса я уже проверил.