|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
Нужно получить из одной таблицы данные в идеале нужна сумма по столбцу сервер расположен удаленно доступа к нему НЕТ, могу только выполнять запросы. SELECT SUM(Payment."Sum") FROM ASV_Entities.Payment Payment WHERE (Payment.InsurerTerDepFK='36058') AND (YEAR(Payment.Enter) = '2013') AND (MONTH(Payment.Enter) = '1') AND (Payment.IsIncome=1) AND (Payment.IsFiction=0) AND (Payment.KBKFK='39210202010061000160') время выполнения запроса около 30 минут а теперь вопрос при запросеSELECT Payment."Sum" FROM ASV_Entities.Payment Payment WHERE Payment.InsurerTerDepFK=36058 выбирается 1015000 записей время запроса около 2 минут при добавлении любого условия время выполнения запроса увеличивается в 2 раза подскажите какое нибуть решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2014, 18:17 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
Chumakov_JA, есть какая-нибудь информация об индексах в этой таблице? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2014, 20:08 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
doublefintChumakov_JA, есть какая-нибудь информация об индексах в этой таблице? в том то и дело что индексированно только поле ID которое ненужно ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2014, 20:14 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
Chumakov_JAdoublefintChumakov_JA, есть какая-нибудь информация об индексах в этой таблице? в том то и дело что индексированно только поле ID которое ненужноЭтот индекс существует по умолчанию IDKEY. Если нет возможности добавить индексов, вариантов кроме перекачать данные в таблицу туда, где будет возможности добавить индексы. только вот вопрос, если доступа к серверу нет, то как вы выполняете запросы ? с помощью SQL можно добавить индексов, остается вопрос того как это переиндексировать, после добавления индексов ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2014, 20:37 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
DAiMorс помощью SQL можно добавить индексов, остается вопрос того как это переиндексировать, после добавления индексов дело в том что админ перегружает сервер каждую ночь. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2014, 20:56 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
Chumakov_JADAiMorс помощью SQL можно добавить индексов, остается вопрос того как это переиндексировать, после добавления индексов дело в том что админ перегружает сервер каждую ночь.Думаю это тоже не проблема, и зависит от версии Cache. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2014, 21:02 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
DAiMorChumakov_JAпропущено... дело в том что админ перегружает сервер каждую ночь.Думаю это тоже не проблема, и зависит от версии Cache. версия вроде 2012 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2014, 21:04 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
Chumakov_JAпри запросеSELECT Payment."Sum" FROM ASV_Entities.Payment Payment WHERE Payment.InsurerTerDepFK=36058выбирается 1015000 записей время запроса около 2 минут при добавлении любого условия время выполнения запроса увеличивается в 2 раза Выполнение запроса с раздельмыми условиями сколько дает по времени? SELECT SUM(Payment."Sum") FROM ASV_Entities.Payment Payment WHERE (YEAR(Payment.Enter) = '2013')SELECT SUM(Payment."Sum") FROM ASV_Entities.Payment Payment WHERE (MONTH(Payment.Enter) = '1') SELECT SUM(Payment."Sum") FROM ASV_Entities.Payment Payment WHERE (Payment.IsIncome=1) SELECT SUM(Payment."Sum") FROM ASV_Entities.Payment Payment WHERE (Payment.IsFiction=0) SELECT SUM(Payment."Sum") FROM ASV_Entities.Payment Payment WHERE (Payment.KBKFK='39210202010061000160') Сколько будут выполняться эти запросы? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2014, 08:26 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
AND (YEAR(Payment.Enter) = '2013') AND (MONTH(Payment.Enter) = '1') Уберите эти строки которые не дают использовать индекс по дате. Даты можно фильтровать через between. Число дней в январе известно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2014, 11:24 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
Den47, Совет, конечно хороший, если у него был хоть какой-то индекс, а у него их нет вообще ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2014, 11:32 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
DAiMor, Зная источник этой таблицы могу сказать, что индексы там есть, причем по всем полям, участвующим в запросе, но единственное полезное поле для использования индекса это как раз Payment.Enter, которому не дают использоваться из-за функций ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2014, 12:47 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
D_De1mosЗная источник этой таблицы могу сказать, что индексы там есть... Обожаю этот безграничный неизведанный мир caché разработки :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2014, 19:46 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
Chumakov_JA, Создание индекса пройдет? Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2014, 17:17 |
|
Помогите оптимизировать SQL запрос
|
|||
---|---|---|---|
#18+
Den47AND (YEAR(Payment.Enter) = '2013') AND (MONTH(Payment.Enter) = '1') Уберите эти строки которые не дают использовать индекс по дате. Даты можно фильтровать через between. Число дней в январе известно.SELECT SUM("Sum") FROM ASV_Entities.Payment Payment WHERE (InsurerTerDepFK=36058) AND (Enter BETWEEN '2014-1-01 00:00:00' AND '2014-1-31 00:00:00') AND (IsIncome=1) AND (IsFiction=0) AND (KBKFK=39210202010061000160) Вот такая конструкция ни к чему не превела а вот так полегчалоSELECT SUM("Sum") FROM ASV_Entities.Payment Payment WHERE InsurerTerDepFK=36058 AND YEAR(Enter) =2014 AND MONTH(Enter) = 1 AND IsIncome=1 AND IsFiction=0 AND KBKFK IN (39210202010061000160) GROUP BY KBKFKи именно при добавлении GROUP BY KBKFK ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2014, 16:05 |
|
|
start [/forum/topic.php?fid=39&msg=38560332&tid=1556949]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 250ms |
total: | 409ms |
0 / 0 |