У меня есть приложение, которое анализирует людей facebook и сравнивает их с вещами, которые им, возможно, понравились в прошлые десятилетия.MySQL Query slow
В качестве части уточнения совпадений у нас есть, я хочу, чтобы каждый пользователь любил (с хешем их идентификатора facebook, чтобы он был анонимным). Люди могут вводить несколько раз, поэтому он хранит их несколько раз, что немного искажает результаты.
Так что мой user_likes
таблица выглядит так:
id | page_id | user_id_hash
----------------------------------
| |
У меня есть около 820000 записей в настоящее время.
В настоящее время, если я делаю запрос:
SELECT page_id, COUNT(*) from user_likes
GROUP BY page_id LIMIT 0,30
Это занимает около 8 секунд и дает мне неправильный подсчет, так как он может считать людей, которые въехали несколько раз больше, чем один раз.
Мои вопросы:
1) Как я могу ускорить этот запрос вверх?
2) Как я могу получить более точный счет?
попробуйте выполнить следующее: 'ALTER TABLE user_likes ADD INDEX page_id (page_id)' - это будет индексировать столбец page_id. –
Я предполагаю, что ускоряет запрос правильно? Я попытался сделать это и получил ошибку mysql: 'для правильного синтаксиса для использования рядом с 'KEY (page_id)' в строке 1' – ahren
Неплохо, попробуйте еще раз. Я перепутал синтаксис. 'ALTER TABLE user_likes ADD INDEX page_id (page_id)' –