Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Порядок условий в where
|
|||
|---|---|---|---|
|
#18+
Привет, играет ли какую то роль порядок условий в where в случае DB2? Имею ввиду, есть индекс по полям А, Б, В, есть индекс по полям Г, Д Нужно в таком же порядке записывать условия в селекте? Код: sql 1. И еще, есть проиндексированное поле, в котором три разных значения "NEW", "UPDATE", "CANCEL" Как лучше искать Код: sql 1. 2. 3. 4. 5. Может все это не имеет значения и все апросы все равно будут переписанны в соотвествии со статистиками? Спасибо Может есть умная статья по этому поводу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2016, 12:22 |
|
||
|
Порядок условий в where
|
|||
|---|---|---|---|
|
#18+
the_moon, порядок роли не играет. в силу коммутативности и транзитивности оператора AND ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2016, 12:58 |
|
||
|
Порядок условий в where
|
|||
|---|---|---|---|
|
#18+
the_moon, если в поле всего три значения и распределение данных близко к равномерному, то как ни пиши - индекс использовать не будет в виду его низкой селективности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2016, 13:01 |
|
||
|
Порядок условий в where
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эхthe_moon, если в поле всего три значения и распределение данных близко к равномерному, то как ни пиши - индекс использовать не будет в виду его низкой селективности Да это аргумент. А если "CANCEL" значение встречается реже чем "NEW" и "UPDATE" и индекс составной к примеру по CLIENTNO, CONTRACTNO и STATE где CLIENTNO, CONTRACTNO это внешние ключи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2016, 13:22 |
|
||
|
Порядок условий в where
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эхthe_moon, если в поле всего три значения и распределение данных близко к равномерному, то как ни пиши - индекс использовать не будет в виду его низкой селективности Неверно в случае MDC (многомерных кластеров), которые построены как индексы (вместо RID-ов блоки строк). OR, если я правильно помню, переписывается на IN. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2016, 14:20 |
|
||
|
Порядок условий в where
|
|||
|---|---|---|---|
|
#18+
the_moonДобрый Э - Эхthe_moon, если в поле всего три значения и распределение данных близко к равномерному, то как ни пиши - индекс использовать не будет в виду его низкой селективности Да это аргумент. А если "CANCEL" значение встречается реже чем "NEW" и "UPDATE" и индекс составной к примеру по CLIENTNO, CONTRACTNO и STATE где CLIENTNO, CONTRACTNO это внешние ключи? Судя по контексту, CLIENTNO и CONTRACTNO в условии фильтрации не упоминаются. Знаю про два возможных сценария использования. 1. Индекс полностью сканируется, в процессе фильтруется по STATE='CANCEL'. 2. Для возможной каждой пары (CLIENTNO, CONTRACTNO) ищется STATE='CANCEL' (как если бы это был UNION ALL из индексов) Не вполне уверен, что DB2 умеет второй сценарий. Да лучше натравите на свой запрос Index Adivser и спросите его, что он предложит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2016, 14:29 |
|
||
|
Порядок условий в where
|
|||
|---|---|---|---|
|
#18+
Victor MetelitsaНеверно в случае MDCи много ты их в среднестатистической системе видел? Я ни одного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2016, 14:31 |
|
||
|
Порядок условий в where
|
|||
|---|---|---|---|
|
#18+
Индексы у DB2 в ораклячьем смысле компрессованные, т.е. для каждого значения идёт список RID'ов (у Oracle надо явно задавать, у DB2 всегда). Это ещё не считая собственно DB2-шной компрессии. Поэтому, когда selectivity слаба, они очень-очень маленькие. Для случаев select count(*) from ... where state=:var (то бишь, index only access) очень выгодные, несмотря на слабую selectivity. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2016, 14:35 |
|
||
|
Порядок условий в where
|
|||
|---|---|---|---|
|
#18+
Добрый Э - ЭхVictor MetelitsaНеверно в случае MDCи много ты их в среднестатистической системе видел? Я ни одного. MDC - один из видов табличного партишионирования, хотя в чём-то лучше ораклячьего, а в чём-то хуже. Люди ораклячье партишионирование где-то видят. Ну да, на DB2 я имею дело только с самописной системой, а Oracle у нас SE1, но не все люди такие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2016, 14:40 |
|
||
|
Порядок условий в where
|
|||
|---|---|---|---|
|
#18+
http://www.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.admin.perf.doc/doc/c0005296.html?lang=en - пример переписывания OR в IN http://www.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.admin.perf.doc/doc/c0024525.html?lang=en а дальше IN может превратиться в Join ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2016, 14:50 |
|
||
|
Порядок условий в where
|
|||
|---|---|---|---|
|
#18+
http://www.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.admin.perf.doc/doc/c0005299.html?lang=en см. про Index Jump Scan. Однако из описания и примеров непонятно, может ли первая колонка быть Index Gap'ом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2016, 14:56 |
|
||
|
Порядок условий в where
|
|||
|---|---|---|---|
|
#18+
Не может (пока?). Тут куча примеров на тему: http://www.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.admin.perf.doc/doc/r0024842.html?lang=en ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2016, 15:24 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=39235174&tid=1600610]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 291ms |
| total: | 448ms |

| 0 / 0 |
