0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 7
|
||||||||||||||||
1 | ||||||||||||||||
Оптимизация запроса с использованием LEFT JOIN27.01.2013, 20:52. Показов 2478. Ответов 11
Метки нет (Все метки)
Всем привет. Который день бьюсь над одной задачей. Помогите пожалуйста.
Существует две таблицы. В одну таблицу заносятся данные о файлах, находящихся в данном дереве (`file`)
И вторая таблица, в которую заносятся данные, выдернутые из лог-файла фтп-сервера (`connection`)
Информация в обеих таблицах заполняется примерно на 200-300 новых строк в сутки. Я вывожу данные из этих двух таблиц следующим запросом:
Запрос должен выполняться каждую 1-2 минуты. Может есть какие-либо идеи? Заранее спасибо
0
|
27.01.2013, 20:52 | |
Ответы с готовыми решениями:
11
Убрать дубли при left join + оптимизация запроса Запрос к БД с использованием LEFT JOIN Запросы RIGHT JOIN и LEFT JOIN в чём различие? Переделать запрос LEFT JOIN -> INNER JOIN |
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
|
|
27.01.2013, 21:45 | 2 |
Добавить индексы на поля по которым осуществляется поиск
0
|
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 7
|
|
27.01.2013, 21:48 [ТС] | 3 |
0
|
1931 / 1165 / 424
Регистрация: 31.05.2012
Сообщений: 4,117
|
|
27.01.2013, 23:41 | 4 |
А зачем полнотекстовой индекс? Обычный индекс по log_filename.
0
|
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 7
|
|
27.01.2013, 23:45 [ТС] | 5 |
Там разница несущественная, да и, складывается ощущение, что индексы не срабатывают.
0
|
1931 / 1165 / 424
Регистрация: 31.05.2012
Сообщений: 4,117
|
|
28.01.2013, 08:46 | 6 |
а EXPLAIN что говорит?
0
|
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 7
|
|
28.01.2013, 13:19 [ТС] | 7 |
0
|
1931 / 1165 / 424
Регистрация: 31.05.2012
Сообщений: 4,117
|
|
28.01.2013, 14:14 | 8 |
Никакие индексы не используютя и нет тех, которые могли бы использоваться
А без ORDER и LIMIT что EXPLAIN говорит? И с наличием обычного индекса по log_filename что выдает?
0
|
Хелпер
|
|
28.01.2013, 14:19 | 9 |
Это можно обойти добавлением таблицы имен файлов
id, filename и добавлять в эти таблицы ID файла, а когда понадобится уже вытаскивать нормальное имя из этой таблицы. |
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 7
|
|
28.01.2013, 16:01 [ТС] | 10 |
0
|
1931 / 1165 / 424
Регистрация: 31.05.2012
Сообщений: 4,117
|
|
28.01.2013, 18:07 | 11 |
1. FULLTEXT индекс не будет использоваться с таким запросом при всем твоем желании (только с синтаксисом MATCH … AGAINST).
2. Обычный индекс должен использоваться, другое дело его можно сделать по части поля 3. Хелпер дело предлагает, такое устройство базы будет оптимальней
0
|
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 7
|
|
29.01.2013, 01:45 [ТС] | 12 |
Забавный момент, если сделать наоборот, то есть поиск по таблице с 16000 записей и к ней джойнить, то запрос выполняется за 0.04 секунды. Почему такая разница получается?
Добавлено через 2 часа 33 минуты А мне нравится. Думаю, так и сделаю. Спасибо
0
|
29.01.2013, 01:45 | |
29.01.2013, 01:45 | |
Помогаю со студенческими работами здесь
12
LEFT JOIN странно влияет на результат запроса Удаление записи из нескольких таблиц с использованием LEFT JOIN (MS SQL) Оптимизация запроса без Join в таблице с 4 млн записей Как записать Left Join (Right Join) при помощи Linq, используя fluent-синтаксис Ошибка "Integrity constraint violation" при запросе INNER JOIN LEFT JOIN Конструкция left join join on on Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |