У меня есть две таблицы, одна из которых соответствует идентификаторам для оценок и одна из которых имеет идентификаторы с фактическими данными примерно в 15 столбцах. В таблице данных столбец id имеет индекс, а в таблице рейтингов идентификатор является первичным ключом, а рейтинг индексируется. Я хочу выбрать данные, но только из строк с положительным рейтингом. чтобы сделать это, я использую запросMYSQL нужен более быстрый запрос
SELECT * FROM data_table
INNER JOIN rating_table ON data_table.id = rating_table.id
WHERE rating > 0
, но по какой-то причине это занимает около 0,35 секунды, который кажется очень долго мне. В таблице данных около 90 000 строк и около 5000 строк в таблице рейтинга, и это должно занимать гораздо меньше, чем даже десятая часть секунды ... Как я могу либо индексировать по-другому, либо запросить по-другому, чтобы ускорить эту задачу?
Редактировать: После профилирования это дало мне следующее. Обратите внимание, что я думаю, что это было в кэше, так что запрос вернулся гораздо быстрее, чем раньше, но даже это может быть полезным для кого-то
0.000012 starting
0.000053 checking query cache for query
0.000014 Opening tables
0.000006 System lock
0.000027 Table lock
0.000044 init
0.000018 optimizing
0.000060 statistics
0.000016 preparing
0.000004 executing
0.004916 Sending data
0.000007 end
0.000003 query end
0.002271 freeing items
0.000009 storing result in query cache
0.000002 logging slow query
0.000004 cleaning up
так я вижу много времени было потрачено на отправку данных ... как можно Я ускоряю эту часть?
Три вопроса: 1) Являются ли 'data_table.id' и' rating_table.id' одного и того же типа данных? 2) Помимо индексации обоих полей 'id', вы также указали« рейтинг »? 3) Профилировали ли вы заявление, чтобы выяснить, не вызывается ли продолжительность другими вещами (например, отправка данных обратно клиенту)? – Bjoern
Создать индекс. Это значительно улучшит ваше время ответа на запрос. –
Да, я сказал в вопросе, что рейтинг уже имеет индекс, и идентификаторы в обеих таблицах имеют один и тот же тип данных. Я запускаю это в php myadmin, так что время действительно потрачено на mysql. Также, что вы подразумеваете под планом запроса? – hackartist