|
|
|
ASE 12.5.x.x использование нескольких индексов ?
|
|||
|---|---|---|---|
|
#18+
вопрос - умеет ли Sybase использовать несколько индексов по одно таблице ? ( в документации чтото об этом ничего не нашел) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2004, 11:45 |
|
||
|
ASE 12.5.x.x использование нескольких индексов ?
|
|||
|---|---|---|---|
|
#18+
Не очень понятно, что такое "использовать" - можно это трактовать по-раному, но скажем так - может. Есть разные стратегии исполнения запросов, которые ASE может применять, и, в частности, в некоторых из них ASE может использовать для выполнения одного запроса несколько индексов по одной таблице. Если вы приведете запрос, то я смогу более конкретно сказать, может ли или будет ли использоваться несколько индексов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2004, 11:54 |
|
||
|
ASE 12.5.x.x использование нескольких индексов ?
|
|||
|---|---|---|---|
|
#18+
я некоректно сформулировал вопрос -- постараюсь изложить правильнее. может ли сайбейс использовать при запросе по таблице использовать два индекса, каждый из которых содержит одно из полей на которые накладываються ограничения? индекс который содерджал бы оба этих поля нету те к примеру есть таблица с большим количество полей ... адже не обязательно с большим кол-вом полей но главное что в запросе эти могу участвовать в самых разных комбинациях. я строю индекс по каждому из полей. Может ли ASE отобрать строки используяю один индекс, потмоу строки использую другой индекс, сделать пересечение результатов и выдать мне выборку. в плане запроса сай пишет что исползует только один индекс. В хинтах я такого не нашел . (к примеру в оракле есть четкий хинт merged_index - пересечение/ обединение результата выборки по нескольким индексам) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. а в оракле можно указать использовать персечение/объединение индексов Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2004, 19:25 |
|
||
|
ASE 12.5.x.x использование нескольких индексов ?
|
|||
|---|---|---|---|
|
#18+
Нет, в ASE у оптимизатора нет такой стратегии выполнения запроса. По крайней мере в версиях до 12.5.0 (Сейчас много нового в последних релизах). Эта стратегия выполнения запроса достаточно странна для меня, как-то она не очень понятна. Если по обоим значениям записей немного, то легче читать по одному индексу и потом сразу данные - будет меньше IO. Даже что-то и не соображу, когда такое будет выгодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2004, 21:34 |
|
||
|
ASE 12.5.x.x использование нескольких индексов ?
|
|||
|---|---|---|---|
|
#18+
Не знаю, как в Оракле, а в MSSQL оптимизатор тоже умеет тащить данные с таблицы, пользуясь множеством индексов. Это не так затратно делать, так как в нем поддерживаются покрывающие индексы, то есть если поля запроса полностью присутствуют в индексах, то оптимизатор работает только с индексами, вообще не обращаясь к таблице. Это как всегда палка о 2-х концах - с одной стороны оптимизатор может самостоятельно разруливать запросы с сложными соединениями таблиц более эффективно, так как он может выбирать не с одного, а нескольких индексов, плюс требований к квалификации специалиста меньше - пойди узнай, какие правильные индексы нужно на таблицы сделать, особенно если они должны быть составными. А тут сделал на каждое поле индекс и спишь спокойно. С другой стороны все эти многоиндексные покрывающие перетурбации очень нехорошо влияют на работу блокировок в MSSQL, скорость обновления (вполне возможно что можно было бы обойтись составным индексом на большую таблицу, а разработчик понаделал кучу индексов и радуется, что оптимизатор сам выбирать будет) и я даже подозреваю скорее всего как раз могут быть частой причиной деадлоков в MSSQL (кто то пишет информацию и блокирует строки в таблице, в это время кто то читает и оптимизатор блокировал те же строки на индексах). Ну а на Оракле может быть и прокатывает такая политика, раз уж он версионник и озабочен не блокировками, а своими сборками мусора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2004, 01:43 |
|
||
|
ASE 12.5.x.x использование нескольких индексов ?
|
|||
|---|---|---|---|
|
#18+
MasterZivНет, в ASE у оптимизатора нет такой стратегии выполнения запроса. По крайней мере в версиях до 12.5.0 (Сейчас много нового в последних релизах). Эта стратегия выполнения запроса достаточно странна для меня, как-то она не очень понятна. Если по обоим значениям записей немного, то легче читать по одному индексу и потом сразу данные - будет меньше IO. Даже что-то и не соображу, когда такое будет выгодно. даже если записей немного но каждая запись разбросана так что по одной записи на страницу? Ведь не одна запись читаеться а целиком страница данных. + иногда оно таки надо, и лучше чтоб такая возможность была. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2004, 22:48 |
|
||
|
ASE 12.5.x.x использование нескольких индексов ?
|
|||
|---|---|---|---|
|
#18+
Какая разница, как они там разбросаны ? А встречный вопрос - а если разбросаны по разным страницам и записи второго индекса ? В общем, я лично не очень понимаю, зачем это нужно и не готов обсуждать полезность этого метода доступа. Я сильно подозреваю, что это может быть полезно для обработки тяжелых, трудно оптимизируемых запросов типа OLAP-ных. Но я всегда считал и продолжаю считать, что лучше написать хороший запрос, чем оптимизировать плохой. Вот например есть в ASE парралельное выполнение запросов. Так вот, применяется она исключительно в случаях, когда запрос настолько плох, что будет молотить все записи. Конечно, такая возможность нужна в сервере, потому что такие запросы иногда нужно выполнять (например, при том же построении индексов). Но если тебе в нормальном запросе (который ты считаешь хорошо выполнимым) предлагают парралельную обработку, то это значит, что что-то не так в запросе и надо что-то делать на уровне текста запроса или на уровне базы (например нет под запрос индекса еще, т.е. ты забыл его создать). Это как пример технологий обработки данных, которые должны быть, но которые использовать в нормальной жизни не нужно. Я подозреваю, что что-то подобное происходит и с поиском по двум индексам, хотя возможно я и не прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 11:22 |
|
||
|
ASE 12.5.x.x использование нескольких индексов ?
|
|||
|---|---|---|---|
|
#18+
искуственная ситуация но - нет возможности под все пару ограничений создать индекс в который будут входить все столбцы на которые накладываються ограничения. при этом выборка по по каждому из ограничений возвращает большое множество данных. но пересечение этих множества на 1-2 порядка меньшее количество записей. в этом случае выборка по двум индексам лучше чем выборка по одному индексу а по второму ограничению делать дальнейший фул тейбл скан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2004, 12:46 |
|
||
|
ASE 12.5.x.x использование нескольких индексов ?
|
|||
|---|---|---|---|
|
#18+
2_solo_: Это к чему это ты ? Я ничего не понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2004, 13:07 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=32695554&tid=2014177]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
68ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 167ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...