MySQL запрос большого числа строк - PullRequest
0 голосов
/ 21 марта 2012

У меня следующий запрос mysql:

EXPLAIN
  SELECT
     id,
     name,
     title,
     description,
     time
  FROM entity
  WHERE 
    (date_end > CURRENT_DATE 
       OR (date_end = CURRENT_DATE AND time_end >= CURRENT_TIME)
     )
     AND (next_date < CURRENT_DATE 
        OR (next_date = CURRENT_DATE AND next_time <= CURRENT_TIME)
     )

Когда можно сделать так, чтобы этот запрос занимал меньше времени при обработке 10000+ строк в таблице?

Ответы [ 2 ]

0 голосов
/ 21 марта 2012

Если возможно, объедините столбцы date_end и time_end в один столбец datetime_end, аналогично для столбцов next_date и next_time, как next_datetime, и установите индекс для datetime_end, next_datetime. Затем вы можете переписать ваш запрос как:

  SELECT id, name, title, description, time
  FROM entity
  WHERE datetime_end >= now() and next_datetime <= now()
0 голосов
/ 21 марта 2012

Отображение / анализ плана объяснения поможет больше ответить.

хотя я предполагаю, что добавление составного индекса на [date_end, time_end] и [next_date,next_time] может помочь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...