powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Оптимизировать запрос с тремя JOIN и несколькими LIKE
25 сообщений из 33, страница 1 из 2
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39668762
Acrobat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток. Столкнулся с проблемой, имеется запрос вида:

Код: sql
1.
2.
3.
4.
5.
SELECT o_name, o_priority FROM table1 
JOIN table2 ON table2.id_t1 = table1.id
LEFT JOIN table3 ON table2.id = table3.id_t2
JOIN table4 ON table2.id = table4.id_t2
WHERE (table3.value LIKE '%ddfmkd%') OR (table3.value LIKE '%bgghng%') OR (table4.value LIKE '%dddff%') 



Работает очень медленно, причём из-за:
Код: sql
1.
2.
3.
4.
SELECT o_name, o_priority FROM table1 
JOIN table2 ON table2.id_t1 = table1.id
LEFT JOIN table3 ON table2.id = table3.id_t2
JOIN table4 ON table2.id = table4.id_t2



Есть ли возможность оптимизировать ???
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39668765
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
03.07.2018 13:15, Acrobat2 пишет:
> Есть ли возможность оптимизировать ???

да
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39668769
Acrobat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Направьте на путь праведный, о мудрые старцы.
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39668773
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Acrobat2,

для начала перемести LEFT JOIN в конец. А потом кури планы.
Впрочем LIKE с поиском внутри строки не индексируется. Если к table3 всегда применяется поисковое выражении в WHERE, то и LEFT JOIN не нужен, достаточно JOIN. А там глядишь может получится получить выгоду от алогритма MERGE/HASH JOIN
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39668777
Acrobat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!!! Стало быстрее, но всё равно хочется быстрее))))
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39668815
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как быстро выполняются и сколько записей выдают запросы:
Код: sql
1.
2.
3.
SELECT table3.id_t2 FROM table3 WHERE (table3.value LIKE '%ddfmkd%') OR (table3.value LIKE '%bgghng%')

SELECT table4.id_t2 FROM table4 WHERE (table4.value LIKE '%dddff%') 
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39668866
AltHasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Acrobat2,

Если таблица небольшая, то есть вариант для ускоренного отбора строк с вашими фразами(словами) c LIKE:

1) искомое поле для LIKE загнать в новую таблицу, разделив на отдельные слова. Например
слово Иванов Петр Сидорович будет как отдельные строки:

Код: plsql
1.
select id,parent,splitted_word from table_split



Код: plaintext
1.
2.
3.
1,22, Иванов 
2,22, Петр 
3,22, Сидорович 
с нужными ключами (в данном случае=22).

2) далее в текстах запросов использовать STARTING WITH, при этом подцепится индекс по этому полю;

У нас ускорение получилось добиться примерно в 20 раз. Попробуйте, м.б. вам это поможет.
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39668872
Acrobat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за идею, я вот тоже думал, как можно изменить существующие таблицы или добавить новую для ускорения. Проблема к сожалению не в LIKE, проблема в JOINах, очень медленно выполняет.
WildSery
завтра проверю, сейчас нет возможности.
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39668873
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
03.07.2018 15:11, Acrobat2 пишет:
> проблема в JOINах, очень медленно выполняет.

никому не показывай планы запросов.
так будет быстрее.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39668874
Acrobat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий03.07.2018 15:11, Acrobat2 пишет:
> проблема в JOINах, очень медленно выполняет.

никому не показывай планы запросов.
так будет быстрее.


Сейчас к сожалению нет возможности показать, только завтра (((
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39668904
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Acrobat2,

вот как забавно, т.е. план посмотреть не можем, а про ускорение говорим. Как мерили?
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39668931
Acrobat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисAcrobat2,

вот как забавно, т.е. план посмотреть не можем, а про ускорение говорим. Как мерили?

Я просто уже дома)))) План остался за горизонтом))))
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39670164
Acrobat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С запросом разобрался, разделил на два, т.к. находится редко, а проверять надо часто. Всем спасибо за помощь. Хотел ещё спросить, как лучше сделать. Есть БД с строковыми значениями телефонных номеров. Примерно 5000 раз в минуту (5000 номеров), необходимо проверять, следующим образом, есть ли вхождение строки (номера) из БД в проверяемую (которых ~5000 в мин), т.е. нужно каждый номер из БД проверять на вхождение в заданный номер. БД весит не много, записей примерно тысяч 10. Получается единственное что можно сделать, это загрузить БД в оперативную память и с неё в цикле перебирать все номера и искать вхождение ???
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39670169
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не для бд задача
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39670170
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чё это не для БД? А для чего?

Автор, задача не ясна. Кто на ком стоял? 5000 тысяч - число красивое. Как 120 - приборы.
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39670172
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я так думаю, тут снова нужен программист...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39670176
Acrobat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WildSery,

Есть номер телефона, например 89231234578, нужно проверить все записи из БД на вхождение (на подстроку) в этом номере. Например очередной номер из БД имеет вид 1234578, это будет совпадением. SQL такую задачу не решить. Хочется спросить профи, как сделать оптимальнее.
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39670180
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Acrobat2,

а по полным номерам нельзя искать или хранить полные номера?
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39670181
Acrobat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К сожалению нет, в этом вся и сложность.
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39670182
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
задача - тьфу.
арабских цифр всего 10.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39670184
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Acrobat2Есть номер телефона, например 89231234578 ...номер из БД имеет вид 1234578
Хрустальный шар подсказывает, что надо не просто подстроку, а хвост.
Если так, то откусывай от пришедшего номера по одному начальному символу и проверяй на полное совпадение. И так до минимального размера, который вообще имеет смысл.
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39670185
Acrobat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящийзадача - тьфу.
арабских цифр всего 10.

Не понял Вас, какая разница 10 их или 10 млн. Тут же задача на сравнение и сдвиг.
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39670188
Acrobat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
afgmAcrobat2Есть номер телефона, например 89231234578 ...номер из БД имеет вид 1234578
Хрустальный шар подсказывает, что надо не просто подстроку, а хвост.
Если так, то откусывай от пришедшего номера по одному начальному символу и проверяй на полное совпадение. И так до минимального размера, который вообще имеет смысл.
Хвост это тоже подстрока, вопрос я задал фундаментального характера. Вы предлагаете тупо перебирать каждый раз, о чём я и писал выше.
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39670189
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Acrobat2Хвост это тоже подстрока, вопрос я задал фундаментального характера. Вы предлагаете тупо перебирать каждый раз, о чём я и писал выше.
Не тупо перебирать, а прицельно искать. И таких индексных поисков будет всего несколько штук.
Если вот прям любая-любая подстрока, то уже сложнее.
...
Рейтинг: 0 / 0
Оптимизировать запрос с тремя JOIN и несколькими LIKE
    #39670190
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
повторяю: без привлечения программиста задачу не решить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Оптимизировать запрос с тремя JOIN и несколькими LIKE
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]