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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2013, 12:59   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
Вопрос Стоимость запросов - что это за зверь?

Всем доброго времени суток!

Дают сабж, админы жалуются что запросы "дорого стоят".

Собственно, что за зверь такой?

БД: Oracle(PLSQL) 10, MS SQL Server 2010 если это имеет значение.
Человек_Борща вне форума Ответить с цитированием
Старый 25.10.2013, 13:11   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

вероято сильно грузят проц. ну и/или долго отрабатывают

так а что админы говорят?
eval вне форума Ответить с цитированием
Старый 25.10.2013, 13:19   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Показывайте свои запросы и индексы таблиц, к которым обращение, желателен ориентировочный объем их, тогда и можно оценить хотя бы виртуально эту стоимость
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.10.2013, 13:55   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
так а что админы говорят?
Ну, что-то в этом духе
Цитата:
Этот запрос:
<SQL CODE>

дорого стоит, просим оптимизировать.
Цитата:
Показывайте свои запросы
Ну вот, к примеру этот:
Код:
select C.CustId from CUSTOMER C 
left join REMOTEIDS RI on RI.ID = C.CUSTID 
left join REMOTEUSER RU on RU.USERKEY = RI.USERKEY 
where RU.LoginName = '123456789'
Говорят, что этот:
Код:
select C.CustId from CUSTOMER C 
where  c.custid= (select ri.id from REMOTEIDS RI where RI.USERKEY=(select ru.userkey from REMOTEUSER RU where RU.LoginName = '123456789'))
будет быстрее. Как это выяснилось? На что смотрят?

Цитата:
индексы таблиц
Без понятия.

Цитата:
желателен ориентировочный объем их
Объём чего? Размеры БД?
Всегда разные, всегда большие(переваливает сотни мб).

Можете сказать, на примере MS SQL Server'а, или PLSQL Developer'а пример, как там где и что смотреть в плане оптимизации запросов?

Последний раз редактировалось Человек_Борща; 25.10.2013 в 13:59.
Человек_Борща вне форума Ответить с цитированием
Старый 25.10.2013, 14:22   #5
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

на планы смотрят и на профайлеры, активити монитооры, адвизоры ...
eval вне форума Ответить с цитированием
Старый 25.10.2013, 14:24   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
select C.CustId from CUSTOMER C
left join REMOTEIDS RI on RI.ID = C.CUSTID
left join REMOTEUSER RU on RU.USERKEY = RI.USERKEY
where RU.LoginName = '123456789'
ну а, хотябы. по размерам данным как в этих таблицах дела обстоят?

статистику можно еще пересобрать
eval вне форума Ответить с цитированием
Старый 25.10.2013, 14:54   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

LEFT JOIN-ы сами по себе достаточно медленные, а еще во WHERE втулили условие хитро

В том запросе вообще достаточно к двум таблицам обратиться

Код:
SELECT RI.ID AS CustId
  FROM REMOTEUSER RU,REMOTEIDS RI
  WHERE RU.LoginName = '123456789' AND RU.USERKEY = RI.USERKEY
Цитата:
индексы таблиц - Без понятия.
Плохо, просите админов, чтобы дали перечень индексов и их ключей по используемым таблицам.
А вообще нужно у себя копию базы иметь и отлаживаться на ней
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 25.10.2013 в 14:58.
Аватар вне форума Ответить с цитированием
Старый 25.10.2013, 14:56   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
ну а, хотябы. по размерам данным как в этих таблицах дела обстоят?
Не знаю. Не мои админы.

У меня песочница и БД в парусотен метров, в реалиях же размеры до гигабайтов точно дорастают.

Аватар, т.е. упороться в глубины SQL и понять что медленно, что быстро?

Последний раз редактировалось Человек_Борща; 25.10.2013 в 14:59.
Человек_Борща вне форума Ответить с цитированием
Старый 25.10.2013, 15:00   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
упороться в глубины SQL и понять что медленно, что быстро?
А как по другому? Теория теорией, но именно это только на практике
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.10.2013, 15:02   #10
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

а и действительно, зачем тут LEFT JOIN-ы, да еще 2?

Цитата:
В том запросе вообще достаточно к двум таблицам обратиться
не факт, если в CUSTOMER, судя по лефту нету данных, а надо знать что он там есть? но тогда первый вопрос еще актуальнее.
eval вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процессор с графическим ядром. Что за зверь? rpy3uH Компьютерное железо 11 05.01.2012 18:20
C# - что за зверь? Genesis Общие вопросы .NET 9 18.12.2010 20:02
А у Вас что за зверь? panda88 Свободное общение 49 22.07.2010 01:27
Obj-C++. Что за зверь? GonZaleZ Общие вопросы C/C++ 5 10.09.2009 20:44
Подскажите, что за зверь? Sinarionn Win Api 4 26.08.2009 12:54