Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
У меня есть обычный select: Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2007, 17:58 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
Where id in (100,105,280,94) Будет ли тормозить - не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2007, 18:15 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
pamir Посмотри EXPLAIN для запроса - используется ли Bitmap Index Scan - если нет, то надо лечить, иначе на выборках IN(...) работать нормально не будет. Проверь, разрешен ли bitmap_scan в конфиге Постгреса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2007, 18:24 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
Ошибся в параметре - правильно он называется "enable_bitmapscan", должно быть "on" и раскомментировано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2007, 18:26 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
alex_v13 pamir Посмотри EXPLAIN для запроса - используется ли Bitmap Index Scan - если нет, то надо лечить, иначе на выборках IN(...) работать нормально не будет. Проверь, разрешен ли bitmap_scan в конфиге Постгреса.Это мне? Пусть автор смотрит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2007, 18:31 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
Telta AvengerУ меня есть обычный select: Код: plaintext Код: plaintext Если оно таки реально огромное, то может быть переполнение стека (у меня было). Я вышел из положения через создание времянки, в которую вносил интересующие меня ID (их могли быть тысячи), а потом SELECT ... WHERE ID IN (SELECT id FROM tmp_table). Разницы в скорости - не ощутил. Замеры не проводил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2007, 18:47 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
alex_v13 пишет: > Посмотри EXPLAIN для запроса - используется ли Bitmap Index Scan - если > нет, то надо лечить, иначе на выборках IN(...) работать нормально не будет. > Проверь, разрешен ли bitmap_scan в конфиге Постгреса. А как в Postgres с "OR optimization strategy" ? Не умеет ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2007, 20:16 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
MasterZiv А как в Postgres с "OR optimization strategy" ? Не умеет ? А что Вы под этой стратегией понимаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 09:29 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
Просто интересно. Если лень - не отвечайте. Но откуда набирается тысяча условий? Пользователь набирает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 09:31 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
MasterZiv А как в Postgres с "OR optimization strategy" ? Не умеет ? Малость погуглил - кроме того что в SyBase она есть, она специальная и с ней бывают баги ничего не нашел Так что делитесь знаниями с народом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 09:34 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
_Андрей_МПросто интересно. Если лень - не отвечайте. Но откуда набирается тысяча условий? Пользователь набирает? Я не автор топика, ну да ладно ;), раскажу про себя У меня есть достаточно сложный агрегатный запрос по которому в одну запись могут выгребаться произвольное количество других записей. В основном от 1 до 2-3к. И есть другая таблица, в которой живут форейны на эту таблицу, и когда юзверь выбирает запись из агрегированного селекта, то ему нужно показать все записи из форейновой таблички. Определять из каких именно записей собралась текущий агрегат - долго. Раньше делал на сервере в агрегате конкатенацию в строку через запятую ID, а потом клиенте добавлял эту строку в where. Потом перешел на временную таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 09:41 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
В моем проекте бывают выборки с размером IN(...) по 2-3 тысячи и все нормально живет. Если на порядок больше, то можно уже заморачиваться с временными таблицами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 13:16 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
Andrey Daeron Если оно таки реально огромное, то может быть переполнение стека (у меня было). Стек можно в конфиге увеличить. Архитектура приложения явно ошибочная, но размер стека не проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 14:58 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
MBG Andrey Daeron Если оно таки реально огромное, то может быть переполнение стека (у меня было). Стек можно в конфиге увеличить. Архитектура приложения явно ошибочная, но размер стека не проблема. Красота теряется. Кроме того начались проблемы с передачей строки на клиента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 15:36 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
Andrey Daeron пишет: > А как в Postgres с "OR optimization strategy" ? > Не умеет ? > А что Вы под этой стратегией понимаете? Это не только я понимаю. select * from ATABLE where field1 = 'aa' or field1 = 'bb' -- не может использовать индекс == select * from ATABLE where field1 = 'aa' union select * from ATABLE where field1 = 'bb' -- может использовать индекс. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 01:20 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
Andrey Daeron пишет: > - кроме того что в SyBase она есть, она специальная и с ней бывают баги Да не только в Sybase она есть. Везде она есть. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 01:21 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
MasterZiv > А что Вы под этой стратегией понимаете? Это не только я понимаю. А кто еще? Еще раз говорю - погуглите, термин принят только по отношению к sybase. Ни к Ораклу, ни к PG, ни к мускулю он никем не применяется. MasterZiv select * from ATABLE where field1 = 'aa' or field1 = 'bb' -- не может использовать индекс == select * from ATABLE where field1 = 'aa' union select * from ATABLE where field1 = 'bb' Код: plaintext QUERY PLAN Код: plaintext 1. 2. 3. 4. 5. 6. 7. Оно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 09:29 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
MasterZiv Andrey Daeron пишет: > - кроме того что в SyBase она есть, она специальная и с ней бывают баги Да не только в Sybase она есть. Везде она есть. Если она есть везде, то чего бы её не быть в PostgreSQL??? И не совсем понятно почему Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 09:42 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
Andrey Daeron Если она есть везде, то чего бы её не быть в PostgreSQL??? И не совсем понятно почему Код: plaintext (МастаЗиф - известный шутник.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 10:26 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
ps: при использовании таблички в IN (SELECT ...) скорее всего результат будет хуже, чем при перечне IN(1,2,3...). Лучше, мне кажется, в этом случае пользовать INNER JOIN вместо IN (SELECT ...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 10:29 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
Telta AvengerЗапрос нещадно тормозит.показывайте explain analyze MasterZivselect * from ATABLE where field1 = 'aa' or field1 = 'bb' -- не может использовать индекспочему нельзя использовать индекс в данном запросе? или вы имели в виде, что нет СУБД, которая это умеет? Andrey Daeron Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 10:33 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat Andrey Daeron Код: plaintext 1. 2. 3. 4. Дык он и так может это сделать, или Вы под Union понимаете простую конкатенацию (по типу UNION ALL)? ЗЫ Растекаясь мыслью по древу - задумался, как же он может быть таким догадливым. По идее он должен смотреть на признак уникальности индекса в IndexScan() . По идее, не так и сложно. Может быть это не оптимально? Или не даёт выигрыша? Реального? (например зобанены ж всякие индексы по типу hash и т.д.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 11:28 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
Andrey DaeronДык он и так может это сделать, или Вы под Union понимаете простую конкатенацию (по типу UNION ALL)?да, чтобы именно план был как для UNION ALL: Код: plaintext 1. 2. 3. 4. Andrey DaeronЗЫ Растекаясь мыслью по древу - задумался, как же он может быть таким догадливым. По идее он должен смотреть на признак уникальности индекса в IndexScan() . По идее, не так и сложно.нет, думаю смотреть он должен именно на соотношение условий, потому что ему может прийти запрос IN ( 1, 2, 3, 4, 3, 3, 2, 5 ), в котором условия дублируются. а как быть с таким запросом: id between 10 and 30 or id between 20 and 40? постгресу надо догадаться :-) и преобразовать его к between 10 and 40 и выполнить простым IndexScan. Andrey DaeronМожет быть это не оптимально?думаю, это не реализовано потому что не так просто Andrey DaeronИли не даёт выигрыша? Реального?используемый план с битмапами хорош, он дает возможно даже меньшее время возврата последней строки, чем Append(IndexScan). но первую строку он возвращает с задержкой, в отличие от Append(IndexScan). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 11:44 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
Andrey Daeron пишет: > А кто еще? Еще раз говорю - погуглите, термин принят только по отношению > к sybase. Ни к Ораклу, ни к PG, ни к мускулю он никем не применяется. Ну может быть. Может быть по-другому называется. Или никак не называется. Но в MS-то оно точно есть. > Оно? Похоже да. А без Bitmap Index ? С простым индексом как будет ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 16:11 |
|
||
|
select и огромное условие
|
|||
|---|---|---|---|
|
#18+
MasterZiv > Оно? Похоже да. А без Bitmap Index ? С простым индексом как будет ? Быть может я не прав. Но в PG, в текущем релизе, нет битмапных индексов. Bitmap Index Scan - это метод работы с индексом т.е. bitmap scan индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 16:41 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34953031&tid=2004822]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 333ms |

| 0 / 0 |
