Я работаю над существующей базой данных с миллионами вставок в день. Сам дизайн базы данных довольно плохой, и фильтрация записей занимает огромное количество времени. мы находимся в процессе перемещения этого в кластер ELK, но в то же время я должен отфильтровать некоторые записи для немедленного использования.
У меня есть две таблицы, подобные этой
table - log_1
datetime | id | name | ip
2017-01-01 01:01:00 | 12345 | sam | 192.168.100.100
table - log_2
datetime | mobile | id
2017-01-01 01:01:00 | 999999999 | 12345
Мне нужно отфильтровать мои данные, используя ip, а также из log_1 и datetime в log_1 и log_2. Для этого я использую запрос ниже
SELECT log_1.datetime, log_1.id, log_1.name, log_1.ip, log_2,datetime, log_2.mobile, log_2.id
FROM log_1
INNER JOIN log_2
ON log_1.id = log_2.id AND log_1.datetime = log_2.datetime
where log_1.ip = '192.168.100.100'
limit 100
Нет необходимости говорить, что для извлечения результатов с таким большим количеством записей требуется вечность. Есть ли лучший способ, я могу сделать то же самое, не ожидая ответа MySQL в течение длительного времени? Другими словами, как я могу оптимизировать свой запрос к такой большой базе данных.
база данных не является производственной, она предназначена только для аналитики