![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите составить правильный SQL запрос. [D6, IB6.x, FireBird]
galexis © (2003-04-24 16:29:00)Имеется таблица, в которой большинство данных ID на другие таблицы и справочники. Пишу запрос:
SELECT DISTINCT A.Fld1,B.NAME,F.NAME as NAME2
FROM Table1 A
LEFT JOIN Table2 B ON B.ID1=A.ID1
LEFT JOIN Table3 F ON F.ID2=A.ID2
Where (B.Name LIKE ""%"" || "+""""+Name.Text+""""+" || ""%"")Все работает отлично.
Но если я добавляю связь с еще одной таблицей:
SELECT DISTINCT A.Fld1,B.NAME,F.NAME as NAME2,G.NAME as NAME3
FROM Table1 A
LEFT JOIN Table2 B ON B.ID1=A.ID1
LEFT JOIN Table3 F ON F.ID2=A.ID2
LEFT JOIN Table4 G ON G.ID3=A.ID3
Where (B.Name LIKE ""%"" || "+""""+Name.Text+""""+" || ""%"")
Тогда запрос выполняется очень долго. Где здесь ошибка?
kravchuk (2003-04-24 18:09:00) [1]galexis ©
IBExpert самая лучшая (имхо) утилита для работы с ИБ, просто супер прога, для хUSSR на шару
http://www.ibexpert.com/download/ibet_2.5.0.22_full.exe
galexis (2003-04-24 18:01:00) [2]kravchuk ©
А что это за IBExpert? Где его взять?
kravchuk (2003-04-24 17:40:00) [3]план запроса рекомендую смотреть в IBExpert, так красиво все графически, понятно и наглядно, я всегда в нем оптимизировал запросы
Johnmen (2003-04-24 17:05:00) [4]galexis © (24.04.03 16:49)
План запроса - см. закладку в интерактивном SQL из IBConsole
>Может поменять местами связывание каких либо таблиц?
Поменяй, посмотри...:) Никто же не мешает...
NAlexey (2003-04-24 17:00:00) [5]>Что значит "Смотри план запроса" ,где то можно посмотреть как выполнялся запрос?
Э-э-э...М-м-м.. Точно! Я не знаю какая у тебя DB. В MSSQL план запроса можно посмотреть в Query Analyzer. Выявить так сказать слабые места и узнать какое именно место из запроса отнимает больше всего времени и ресурсов.
galexis (2003-04-24 16:49:00) [6]>NAlexey ©
Что значит "Смотри план запроса" ,где то можно посмотреть как выполнялся запрос?
>Johnmen ©
Записей в Table4 всего около 2000. Вот в Table2 порядка 40 000. Имеет ли значение в каком порядке написаны JOIN? Может поменять местами связывание каких либо таблиц?
Johnmen (2003-04-24 16:37:00) [7]Что ты называешь ошибкой ?
А выполняется долго из-за большого количества записей в Table4.
NAlexey (2003-04-24 16:33:00) [8]Смотри план запроса и оптимизируй.