У меня прибл. 200K строк в таблице tb_post
, и каждые 5 минут она имеет прибл. 10 новых вкладышей.
Я использую следующий запрос для извлечения строк -
SELECT tb_post.ID, tb_post.USER_ID, tb_post.TEXT, tb_post.RATING, tb_post.CREATED_AT,
tb_user.ID, tb_user.NAME
FROM tb_post, tb_user
WHERE tb_post.USER_ID=tb_user.ID
ORDER BY tb_post.RATING DESC
LIMIT 30
Для сортировки всех строк отсортированным способом требуется более 10 секунд.
Ниже приведен отчет запроса EXPLAIN:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE tb_user ALL PRIMARY NULL NULL NULL 20950 Using temporary; Using filesort
1 SIMPLE tb_post ref tb_post_FI_1 tb_post_FI_1 4 tb_user.id 4
Несколько входов:
tb_post.RATING
- это тип поплавка
- Есть индекс на
tb_post.USER_ID
Может кто-нибудь предложить мне несколько советов о том, как мне оптимизировать этот запрос и повысить его производительность чтения?
PS: я новичок в вопросах масштабирования базы данных. Так что любые предложения будут полезны специально для этого запроса.