2016-08-03 2 views
1

У меня есть база данных MySQL с более чем 10 тыс. Строк. Когда я выполнить запрос, чтобы получить все строки, в течение 24 часов, это занимает очень много времени, чтобы получить результаты:Улучшение производительности запроса с индексированием

$sql = 'SELECT *, DATE_FORMAT(m.time, "%d.%m.%Y %H:%i:%s") AS date 
    FROM markers m,pid p 
    WHERE m.time >=DATE_SUB(NOW(), INTERVAL 24 HOUR) 
    AND m.pidID=p.id'; 

Я прочитал об индексации таблиц, но не мог приспособить его к моему запросу. Может кто-нибудь объяснить, как изменить указанный запрос с индексированием, чтобы запрос не выполнял полную проверку таблицы?

+0

Индексы не отображаются в запросах. Они находятся в конфигурации таблицы. Я бы попытался добавить индекс в 'm.time',' m.pid' и 'p.pid' – litelite

+0

См. [" Как добавить индексы в таблицы mysql? "] (Http://stackoverflow.com/questions/3002605/how-do-i-add-indexes-to-mysql-tables) –

+0

Индекс не является частью запроса. Вы должны изменить таблицу, чтобы добавить индекс * до *, чтобы выполнить запрос. –

ответ

0

Запросы обычно полезны для индексов полей, используемых в их WHERE и JOIN...ON условиях (и ORDER|GROUP BY списков).

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