Улучшение приведенного ниже оракула для большей эффективности - PullRequest
0 голосов
/ 24 ноября 2018

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

1 Ответ

0 голосов
/ 24 ноября 2018

Вы не должны преобразовывать типы данных даты в символы при выполнении сравнений.Это имеет два отрицательных эффекта:

  1. Вы фактически «скрываете» статистику по этим столбцам, что означает, что оптимизатор может не сделать лучший выбор плана выполнения
  2. Если у вас есть индексы настолбцы, вы запрещаете их использование.

Если ваши столбцы CREATED_ON и MODIFIED_ON не хранят часть времени, то ваши предикаты могут быть просто

BC.CREATED_ON = trunc(SYSDATE)
 OR 
BC.MODIFIED_ON = trunc(SYSDATE)

Есливаши столбцы do содержат часть времени, тогда вы должны сформулировать свои предикаты, как показано

BC.CREATED_ON >= trunc(sysdate) and BC.CREATED_ON < trunc(sysdate)+1
or
BC.MODIFIED_ON >= trunc(sysdate) and BC.MODIFIED_ON < trunc(sysdate)+1

Что вы пытаетесь сделать, так это избегать применения функции к столбцам,TO_CHAR() в вашем вопросе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...