Максимальные значения, в которых пункт MySQL - PullRequest
1 голос
/ 11 марта 2010

Кто-нибудь знает, сколько значений я могу дать в предложении where in? Я получаю 25000 значений в предложении where in, и MySQL не может выполнить. Какие-нибудь мысли? В ожидании ваших мыслей

Ответы [ 3 ]

3 голосов
/ 18 апреля 2012

Несмотря на то, что он старый, он все равно отображается в результатах поиска, поэтому стоит ответить.

В MySQL нет жестко заданного максимума для длины запроса. Это включает в себя все части запроса, такие как предложение WHERE.

Однако, существует значение max_allowed_packet, которое определяет самый большой запрос, который вы можете выполнить в процессе сервера MySQL. Это связано не с количеством элементов в запросе, а с общей длиной запроса. Так

SELECT * FROM mytable WHERE mycol IN (1,2,3);

менее вероятно достигнет лимита, чем

SELECT * FROM mytable WHERE mycal IN ('This string','That string','Tother string');

Значение max_allowed_packet настраивается от сервера к серверу. Но почти наверняка, если вы достигаете предела, потому что вы пишете операторы SQL эпической длины (вместо того, чтобы иметь дело с двоичными данными, которые являются законной причиной для их попадания), тогда вам нужно переосмыслить свой SQL.

2 голосов
/ 11 марта 2010

Я думаю, что если это ограничение является проблемой, значит, вы делаете что-то не так.

Возможно, вы могли бы сохранить данные из предложения where в таблице и затем присоединиться к нему. Это, вероятно, будет более эффективным.

0 голосов
/ 07 января 2015

Я думаю, что это что-то со временем выполнения.

Я думаю, вы делаете что-то вроде этого: Поправьте меня, если я ошибаюсь:

Select FROM table WHERE V1='A1' AND V2='A1' AND V3='A3' AND ... Vn='An'

Всегда есть эффективный способ сделать свой SELECT в своей базе данных. Работа с базой данных важна, чтобы помнить, что секунды очень важны.

Если вы можете рассказать, как выглядит ваш запрос, мы поможем вам сделать эффективный оператор SELECT.

Желаю тебе успеха

...