Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Частичные индексы
|
|||
|---|---|---|---|
|
#18+
Есть таблица, с полем field int8. В данном поле ~0.1% ненулевые. Однако данное поле активно используется в выборках. Запрос для тестов: Код: plaintext Был индекс Код: plaintext 1. 2. Код: plaintext 1. 2. Решил попробовать создать частичный индекс. Код: plaintext 1. Код: plaintext 1. Меняем запрос для тестов: Код: plaintext 1. 2. PG 8.2.4 Это особенность оптимизатора PG или я что-то неправильно сделал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2007, 06:32 |
|
||
|
Частичные индексы
|
|||
|---|---|---|---|
|
#18+
ChameLe0nЕсть таблица, с полем field int8. В данном поле ~0.1% ненулевые. Однако данное поле активно используется в выборках. Запрос для тестов: Код: plaintext Был индекс Код: plaintext 1. 2. Код: plaintext 1. 2. Решил попробовать создать частичный индекс. Код: plaintext 1. Код: plaintext 1. Меняем запрос для тестов: Код: plaintext 1. 2. PG 8.2.4 Это особенность оптимизатора PG или я что-то неправильно сделал? Чего-то поля разные в запросах, да и запросы разные. Ясен пень, что в разных запросах ПГ может по-разному решать использовать или не использовать индекс. ЗЫ Лучше приводить EXPLAINE ANALYZE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2007, 09:32 |
|
||
|
Частичные индексы
|
|||
|---|---|---|---|
|
#18+
авторЧего-то поля разные в запросах, да и запросы разные Приведено сугубо для примера. Кусок explain привел. Остальное неважно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2007, 10:16 |
|
||
|
Частичные индексы
|
|||
|---|---|---|---|
|
#18+
авторЯсен пень, что в разных запросах ПГ может по-разному решать использовать Это очевидно. Также я думаю очевидно что данный частичный индекс подходит для обеих запросов(where field=156456, where field>0). Кривой вариант - попробовать where field>0 and field=<число> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2007, 10:28 |
|
||
|
Частичные индексы
|
|||
|---|---|---|---|
|
#18+
ChameLe0n Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2007, 10:38 |
|
||
|
Частичные индексы
|
|||
|---|---|---|---|
|
#18+
ChameLe0nПриведено сугубо для примера. Кусок explain привел. Остальное неважно Ошибся немного.... Код: plaintext 1. следует читать как Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2007, 12:56 |
|
||
|
Частичные индексы
|
|||
|---|---|---|---|
|
#18+
Переделал запрос: Код: plaintext explain: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2007, 13:04 |
|
||
|
Частичные индексы
|
|||
|---|---|---|---|
|
#18+
Проверил, видимо тип констант в предикате индекса должен совпадать с типом соответствующей переменной. Создавайте так: CREATE INDEX "index" ON "public"."table" USING btree ("field") WHERE field > 0::int8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2007, 13:48 |
|
||
|
Частичные индексы
|
|||
|---|---|---|---|
|
#18+
LeXa NalBatСоздавайте так: CREATE INDEX "index" ON "public"."table" USING btree ("field") WHERE field > 0::int8 А у меня вполне работает такой индекс (на обычных запросах "where field=1234") Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2007, 16:16 |
|
||
|
Частичные индексы
|
|||
|---|---|---|---|
|
#18+
Vladimir SitnikovА у меня вполне работает такой индекс ... WHERE field is not nullУ меня тоже "field::int8 is not null" работает, а "field::int8>0" не работает, при этом "field::int8>0::int8" работает. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Код: 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. Vladimir SitnikovМожет, стоит более ясно излагать базе то, что мы от неё хотим?Нет, лучше пусть постгрес сам научится наконец-то преобразовывать типы... не только корректно, но и оптимально с т.з. производительности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2007, 17:20 |
|
||
|
Частичные индексы
|
|||
|---|---|---|---|
|
#18+
Про Код: plaintext LeXa NalBatНет, лучше пусть постгрес сам научится наконец-то преобразовывать типы... не только корректно, но и оптимально с т.з. производительности. Согласен с LeXa. Думал эта болезнь у PG излечилась в 8 версии. LeXa NalBatСоздавайте так: CREATE INDEX "index" ON "public"."table" USING btree ("field") WHERE field > 0::int8 Помогло, благодарю за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2007, 08:48 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=295&tid=2005389]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
24ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 323ms |

| 0 / 0 |
