powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Планируемое время и реальное отличаются в 5 000 раз :(((
15 сообщений из 15, страница 1 из 1
Планируемое время и реальное отличаются в 5 000 раз :(((
    #39570243
queezy relax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.


Простой запрос типа:

Код: sql
1.
2.
3.
4.
SELECT id,otype, nfield,DATECREATE,fnum,ch 
FROM table1  
WHERE che = '0' 
AND to_char(datec, 'YYYY-MM-DD') = '2017-12-05'




вот такую картину показывает:
...
Рейтинг: 0 / 0
Планируемое время и реальное отличаются в 5 000 раз :(((
    #39570244
queezy relax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как его можно ускорить?
...
Рейтинг: 0 / 0
Планируемое время и реальное отличаются в 5 000 раз :(((
    #39570251
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
queezy relax,

Даже для приблизительного ответа нужно знать структуру таблицы, схему её индексирования и количество данных в ней.
...
Рейтинг: 0 / 0
Планируемое время и реальное отличаются в 5 000 раз :(((
    #39570253
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
queezy relax,

но первое, что бросается в глаза - применение функции преобразования к полю таблицы, а не к литералу, с которыми оно сравнивается.
...
Рейтинг: 0 / 0
Планируемое время и реальное отличаются в 5 000 раз :(((
    #39570255
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
queezy relaxкак его можно ускорить?
не путайте "время планирования" с запланированным

ну и за ф--ии на стороне множества а не константы, т.е. условия типа :
Код: sql
1.
AND to_char(datec, 'YYYY-MM-DD') = '2017-12-05'


даже без упоминания индексов отрывать ядрышки напрочь
...
Рейтинг: 0 / 0
Планируемое время и реальное отличаются в 5 000 раз :(((
    #39570316
queezy relax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqqueezy relaxкак его можно ускорить?
не путайте "время планирования" с запланированным

ну и за ф--ии на стороне множества а не константы, т.е. условия типа :
Код: sql
1.
AND to_char(datec, 'YYYY-MM-DD') = '2017-12-05'


даже без упоминания индексов отрывать ядрышки напрочь



Индекс по полю datec есть:

Код: sql
1.
2.
3.
4.
CREATE INDEX index_datec
  ON od_table1  
  USING btree
  (datec);




Но меня смущает что скан а не сик идет.

Подскажите как сделать сравнение чтобы быстрее отработал запрос?

Как избавиться от " ф--ии на стороне множества а не константы" ?
...
Рейтинг: 0 / 0
Планируемое время и реальное отличаются в 5 000 раз :(((
    #39570318
queezy relax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ООООО!!!!!


СДЕЛАЛ ТАК:


Код: sql
1.
AND datec> '2017-12-05' AND datec< '2017-12-06'




В ПЛАНЕ ПОЯВИЛСЯ ИНДЕКС!!!!


Скорость в 7 раз быстрее стала!!!!



СПАСИБО!!!!
...
Рейтинг: 0 / 0
Планируемое время и реальное отличаются в 5 000 раз :(((
    #39570319
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
queezy relax...

Как избавиться от " ф--ии на стороне множества а не константы" ?
руками , и бестолковкой


Код: plaintext
AND to_char(datec, 'YYYY-MM-DD') = '2017-12-05'



Код: sql
1.
2.
AND  datec  >=date'2017-12-05'
AND  datec  <date'2017-12-05'+1
...
Рейтинг: 0 / 0
Планируемое время и реальное отличаются в 5 000 раз :(((
    #39570322
queezy relax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqqueezy relax...

Как избавиться от " ф--ии на стороне множества а не константы" ?
руками , и бестолковкой


Код: plaintext
AND to_char(datec, 'YYYY-MM-DD') = '2017-12-05'



Код: sql
1.
2.
AND  datec  >=date'2017-12-05'
AND  datec  <date'2017-12-05'+1




Да, так все супер, спасибо!


Сейчас думаю как сделать чтобы дата в строке упоминалась только 1 раз.

Т.к. она динамически в скрипт всовывается и желательно чтобы она один раз всовывалась.


Пытался так:

Код: sql
1.
AND '2017-12-05' =  date_trunc('day', datec )



Но пропадает индекс в плане

Через битвин не придумал как дату только один раз упомянуть.
...
Рейтинг: 0 / 0
Планируемое время и реальное отличаются в 5 000 раз :(((
    #39570328
queezy relax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, с двумя датами тоже норм.


Ребята, большое спасибо!
...
Рейтинг: 0 / 0
Планируемое время и реальное отличаются в 5 000 раз :(((
    #39570334
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
queezy relaxИндекс по полю datec есть:

Код: sql
1.
2.
3.
4.
CREATE INDEX index_datec
  ON od_table1  
  USING btree
  (datec);


он не работает, когда с левой стороны функция
...
Рейтинг: 0 / 0
Планируемое время и реальное отличаются в 5 000 раз :(((
    #39570335
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
queezy relax
Сейчас думаю как сделать чтобы дата в строке упоминалась только 1 раз .

Т.к. она динамически в скрипт всовывается и желательно чтобы она один раз всовывалась.


"мальчик, ты дебил"

сказали же, что бороться надо не за длину инструкции SQL а за возможность планировщика==оптимизатора разобрать ее в оптимально исполняемый код.

сколько кило "лишних" строчек придется написать -- вас волновать не должно. это не инструцкии процессору. "слово==дело", это декларации. иногда они устроены так, что надо сказать 100 слов вместо 1 -- и выполнять придется в 100 раз меньше.

т.е. за постановку задачи "уменьшить длину скл--инструкции" в среднем надо увольнять по профнепригодности. если вы не разработчик самих этих "кляуз языка" (от ёмкости и выразительности которых зависит длина кода обыкновенного скл--кодера)


, да, для скрипта сделайте препаред или ф-ю. и передавайте параметры, а не склеивайте строку. (параметр будет один). заодно от инжекций слегка оборонитесь.
...
Рейтинг: 0 / 0
Планируемое время и реальное отличаются в 5 000 раз :(((
    #39570340
queezy relax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ок
...
Рейтинг: 0 / 0
Планируемое время и реальное отличаются в 5 000 раз :(((
    #39570375
rozoresi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
queezy relaxСейчас думаю как сделать чтобы дата в строке упоминалась только 1 раз.


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE INDEX index_datec_date
  ON od_table1  
  USING btree
  (cast(datec as date));

SELECT id,otype, nfield,DATECREATE,fnum,ch 
FROM table1  
WHERE che = '0' 
AND cast(datec as date) = '2017-12-05'



qwwq, ты чё такой дерзкий?
...
Рейтинг: 0 / 0
Планируемое время и реальное отличаются в 5 000 раз :(((
    #39570383
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rozoresi,

на кажный чих по индексу ?
попутного ветра, однако.


тут уже есть гурьи , исповедующие такую же стратегию -- не обучить планер делать как можно больше с одним индексом, а обвеситься индексами на кажный чих. по самые небалуйсы.

при индексе в 300ГБ заведение его дубля с отличием в рюшечках (паттернопсе) за ради одной единственной операции -- забавный способ оттоптать себе достоинство.

в итоге планер у пж не умеет с индексами почти ничего, а там где умеет -- лажает как дитё малое, гадючее. но индексов "искаропке" -- как грязи.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Планируемое время и реальное отличаются в 5 000 раз :(((
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]