Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.02.2016, 10:47   #1
koly4ii
 
Регистрация: 29.02.2016
Сообщений: 3
Восклицание Проблема с запросом

Есть проблема с функцией. В функции делается несколько похожих друг на друга выборок. Все делаются достаточно быстро (<= 1 секунды) кроме одной. Она кружится порядка минуты - это очень долго для данной задачи. Может есть у кого мысли что может быть не так с самой базой или запросом. Вот код:
Код:
...
select 
        T4.ID_PROD
        from Table1 T1
        join Table2 T2 on T2.IDT1 = T.ID
        join Table3 T3 on T3.ID = T2.IDT3
        join Table4 T4 on T4.ID = T3.IDT4
        join Table4 T5 on T5.PRODUCT = T3.PRODUCT
        where T1.A = '15-12'
                 and T4.ID_PROD = 'AA'
                 and T5.ID_DOP = 5
                 and ((T2.ID3=10) or
                        (T2.ID3=10 in (5,7)   
                         and ((T3.NAME='Y' and T2.NAME = '12345')
                                or (T3.NAME='Y' and T2.NAME between '123' and '567')
                                or (T3.NAME='Y' and T2.NAME between '78' and '90')
                               )
                        )
                       )
...
При комментировании условия
Код:
and T4.ID_PROD = 'AA'
всё отрабатывает быстро (менее секунды).
koly4ii вне форума Ответить с цитированием
Старый 29.02.2016, 12:18   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Так не пробовал?
Код:
join Table4 T4 on T4.ID = T3.IDT4 AND T4.ID_PROD = 'AA'
Куча or-ов или in по сути своей многократное выполнение запроса

Определись с индексами по используемым условия выборок
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 29.02.2016, 14:13   #3
koly4ii
 
Регистрация: 29.02.2016
Сообщений: 3
Радость

Пробовал. Да я понимаю, что тут слишком много условий и таблица Т3 просто огромная, но по-другому вообще мыслей нет как сделать. Есть вариант, что база тоже не совсем правильно организована, но тут уж я сейчас ничего поделать не смогу, да и запрос-то по сути чужой приходится допиливать.
Вроде получилось отказаться вовсе от этого условия, реорганизовав селект, буду дальше смотреть. В любом случае, спасибо за совет! )
koly4ii вне форума Ответить с цитированием
Старый 02.03.2016, 11:27   #4
koly4ii
 
Регистрация: 29.02.2016
Сообщений: 3
По умолчанию

В общем решил проблему некоторым другим способом. почему эта выборка подтормаживает так и е понял. Тему можно закрывать.
koly4ii вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с запросом povelitel PHP 5 22.09.2015 17:07
Проблема с запросом. artiom4356 JavaScript, Ajax 9 25.05.2015 13:12
Проблема с запросом J4SSektor SQL, базы данных 0 20.05.2013 03:55
проблема с запросом chircov090993 БД в Delphi 2 21.03.2012 19:43
Проблема c запросом! SatS SQL, базы данных 6 24.01.2009 22:52