2012-03-21 3 views
0

У меня есть следующий запрос MySQL: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 + строк в таблице?

ответ

0

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

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

0

Если возможно, объединить 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

Я не думаю, что будет работать .. это появляется его таблица имеет дату в одном поле, время в другом, и, если не поле истинной даты/время для time_end, он немного застрял на том, что у него уже есть. – DRapp

+0

Я советовал ему изменить свой дизайн базы данных - если это возможно. –

+0

DOOhhhh ... судорога мозга сегодня утром ... даже не читала ваши комментарии об этом .. Может кто-то сказать кофеин – DRapp

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