Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.27;
Скачать: CL | DM;

Вниз

Оптимизация запроса   Найти похожие ветки 

 
DieHard ©   (2002-04-30 12:19) [0]

Есть запрос типа
SELECT * FROM tab1
WHERE
c1 IN(SELECT tab2.c2 FROM tab2 WHERE tab2.c3 LIKE "ABC%")
Выборка на больших базах занимает значительное время
Нет ли способов оптимизации данного запроса?
Похоже вложенный SELECT выполняется для каждой записи.
Пробовал
SELECT * FROM tab1
LEFT JOIN tab2 ON (tab1.c1=tab2.c2)
WHERE
UPPER(c3) LIKE "ABC%"
- работает еще медленнее


 
Alexandr ©   (2002-04-30 12:23) [1]

еще медлее потомучто у тебя откуда-то взялся upper а значит Like идет не по индексу в втором случае.


 
kaif ©   (2002-04-30 12:32) [2]

Вообще запросы типа ...WHERE IN (SELECT... самые медленные и при построении структуры базы (самой задачи) перспективу таких запросов лучше не допускать.
Если уже ничего изменить нельзы - советую создавать временную таблицу и уничтожать после выборки данных.

CREATE TABLE TMP451423612 (...);

INSERT INTO TABLE TMP451423612 SELECT tab2.c2 FROM tab2 WHERE tab2.c3 LIKE "ABC%";

SELECT * FROM tab1, TMP451423612 WHERE tab1.c1 = TMP451423612.c2;

/*...здесь нужно вытянуть все это на клиент*/

DROP TABLE TMP451423612;

Тогда каждый запрос сработает 1 раз.


 
Johnmen ©   (2002-04-30 12:33) [3]

Просто убери LEFT в JOIN"е - и будет быстрее...
Тем более, что он не нужен по идеологии....


 
kaif ©   (2002-04-30 13:03) [4]

Вообще-то, у меня такое ощущение, что если с LEFT JOIN задача решается, то проще классический INNER JOIN:
SELECT * FROM tab1,tab2
WHERE tab1.c1=tab2.c2 and UPPER(c3) LIKE "ABC%"

Может, индексов (c1 и c2) в таблицах нет?
Все это, как правило, очень быстро должно работать...


 
Johnmen ©   (2002-04-30 13:07) [5]

>kaif © (30.04.02 13:03)
В том-то и дело, что с левыми/правыми джоинами она решается неверно, а с внутренними - верно...



Страницы: 1 вся ветка

Текущий архив: 2002.05.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.009 c
4-88676
SergeyM
2002-03-24 12:34
2002.05.27
WinAPI


1-88530
Vasilii
2002-05-14 14:53
2002.05.27
Доооолгий Form.Showmodal?


7-88644
samos
2002-02-27 11:22
2002.05.27
Реестр или rundll32


1-88480
Vladimir_Shk
2002-05-13 17:44
2002.05.27
Проблема с отладчиком.


3-88369
Ura
2002-04-29 14:41
2002.05.27
Вложеные запросы