|
|
|
Как помещать более 1000 значений в оператор IN?
|
|||
|---|---|---|---|
|
#18+
Столкнулся с проблемой что нужно поместить в данный оператор более 1000 значений, есть ли способ обойти это ограничение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2018, 07:52 |
|
||
|
Как помещать более 1000 значений в оператор IN?
|
|||
|---|---|---|---|
|
#18+
where (a, 1) in ((1, 1), (2, 1),...(1000,1)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2018, 07:54 |
|
||
|
Как помещать более 1000 значений в оператор IN?
|
|||
|---|---|---|---|
|
#18+
Festani_10, Через OR Через временную таблицу еще делают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2018, 08:06 |
|
||
|
Как помещать более 1000 значений в оператор IN?
|
|||
|---|---|---|---|
|
#18+
Можно через коллекцию. Оператор MEMBER OF . Только тип коллекции должен быть объявлен на уровне схемы. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2018, 09:21 |
|
||
|
Как помещать более 1000 значений в оператор IN?
|
|||
|---|---|---|---|
|
#18+
да, слушай больше про коллекции. чтобы оптимизитор не оценил кардинальность, не заюзал индексы и прочее. но как показывает мой опыт если в in надо передать более 1000 это либо проблемы с днк, либо с архитектурой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2018, 09:42 |
|
||
|
Как помещать более 1000 значений в оператор IN?
|
|||
|---|---|---|---|
|
#18+
Shtock, А вот тут поддержу, даже при том что у нас разработчики используют временные таблицы (куда заранее отбирают данные), оптимизатор не может оценить их кардинальность. Возможно просто запросом было бы лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2018, 10:26 |
|
||
|
Как помещать более 1000 значений в оператор IN?
|
|||
|---|---|---|---|
|
#18+
Shtockно как показывает мой опыт если в in надо передать более 1000 это либо проблемы с днк, либо с архитектурой.Где находится то граничное число, начиная с которого можно говорить о проблемах с ДНК или архитектурой? И как все-таки отличить первое от второго? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2018, 10:27 |
|
||
|
Как помещать более 1000 значений в оператор IN?
|
|||
|---|---|---|---|
|
#18+
AmKad, Пример приведу. В одной таблице и продукты и партии. Партий на миллионы. Продуктов на 150 тысяч, но отбирают их с завязкой на производителя IN (...) Когда производителей в IN достаточно начинается FULL_SCAN всей таблицы товаров (вместе с партиями). Благо у нас скорости хорошие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2018, 10:31 |
|
||
|
Как помещать более 1000 значений в оператор IN?
|
|||
|---|---|---|---|
|
#18+
nata44845Продуктов на 150 тысяч, но отбирают их с завязкой на производителя IN (...)Ну так я могу подгадать случаи, когда и для одного значения FTS будет, или наоборот, для двух тысяч значений - index range scan. Граничная чиселка, чиселка-то где? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2018, 10:39 |
|
||
|
Как помещать более 1000 значений в оператор IN?
|
|||
|---|---|---|---|
|
#18+
AmKad, "Чиселка" в том, что разработчик зачем-то пихнул в одну таблицу разные данные - косяк в архитектуре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2018, 10:41 |
|
||
|
Как помещать более 1000 значений в оператор IN?
|
|||
|---|---|---|---|
|
#18+
Все довольно просто есть справочник в котором более 1000 значений. и на репортинг надо выбрать в фильтре все значения, выбирается через оператор IN из определенного поля этого справочника. выдает ошибку т.к. в переменную передается более 1000 значений. AmKadnata44845Продуктов на 150 тысяч, но отбирают их с завязкой на производителя IN (...)Ну так я могу подгадать случаи, когда и для одного значения FTS будет, или наоборот, для двух тысяч значений - index range scan. Граничная чиселка, чиселка-то где? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2018, 11:11 |
|
||
|
Как помещать более 1000 значений в оператор IN?
|
|||
|---|---|---|---|
|
#18+
Festani_10, эта проблема известна всем давно. Добавь union all-ом кастом значение "Выбрать все" и обрабатывай уже его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2018, 11:14 |
|
||
|
Как помещать более 1000 значений в оператор IN?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2018, 11:33 |
|
||
|
Как помещать более 1000 значений в оператор IN?
|
|||
|---|---|---|---|
|
#18+
В целом я наблюдаю весьма часто в нашем приложении, когда разработчики среднего слоя складывают по 2, 3 тысячи айдишников в IN и начинают недоумевать вместо того, чтоб либо сложить их во временную таблицу и это реально получается быстрее либо просто подумать и передать не айдишники, а, например, код группы, которая включает в себя эти айдишники. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2018, 21:23 |
|
||
|
Как помещать более 1000 значений в оператор IN?
|
|||
|---|---|---|---|
|
#18+
Shtockвременную таблицуА если мультизвенка с пулом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2018, 22:08 |
|
||
|
Как помещать более 1000 значений в оператор IN?
|
|||
|---|---|---|---|
|
#18+
Festani_10Все довольно просто есть справочник в котором более 1000 значений. и на репортинг надо выбрать в фильтре все значения, выбирается через оператор IN из определенного поля этого справочника. выдает ошибку т.к. в переменную передается более 1000 значений. Почему нельзя сделать in (select ... from справочник where условие для справочника сформированное фильтром в приложении) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2018, 00:14 |
|
||
|
Как помещать более 1000 значений в оператор IN?
|
|||
|---|---|---|---|
|
#18+
SkilledJuniorFestani_10Все довольно просто есть справочник в котором более 1000 значений. и на репортинг надо выбрать в фильтре все значения, выбирается через оператор IN из определенного поля этого справочника. выдает ошибку т.к. в переменную передается более 1000 значений. Почему нельзя сделать in (select ... from справочник where условие для справочника сформированное фильтром в приложении) ? IN и есть фильтр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2018, 00:17 |
|
||
|
Как помещать более 1000 значений в оператор IN?
|
|||
|---|---|---|---|
|
#18+
Пользователь тыкает мышкой более тысячи галочек? Может посчитать в приложении сколько значений пойдет в условие in и сколько в not in, например пользователь выбрал все, значит in вообще ненужен просто выбирается весь справочник, если пользователь выбрал все, а потом снял выбор с нескольких значений то можно использовать not in, в общем можно как то творчески подойти к формированию условия и ограничению фильтра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2018, 00:37 |
|
||
|
Как помещать более 1000 значений в оператор IN?
|
|||
|---|---|---|---|
|
#18+
Там еще и на грабли с максимальной длинной оператора можно наступить, 3 МБ кажется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2018, 00:41 |
|
||
|
Как помещать более 1000 значений в оператор IN?
|
|||
|---|---|---|---|
|
#18+
Relic Hunter А если мультизвенка с пулом? именно она, но как раз таки когда у нас такие ситуации это всё происходит в рамках одной транзакции, так что в этот момент коннект к БД держится и проблемы нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2018, 15:52 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39698786&tid=1883497]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
160ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 433ms |

| 0 / 0 |
