Существует ли ограничение к длине запроса в mysql?

Я задаю этот вопрос, потому что я должен знать это ограничение, поскольку я генерирую Запрос Select в своем Сценарии PHP и части того, ГДЕ в этом запросе сгенерирован в цикле.
Точно это похоже на это

 $query="SELECT field_names FROM table_name WHERE ";
 $condition="metadata like \"%$uol_metadata_arr[0]%\" ";
 for($i=1; $i<count($uol_metadata_arr); $i++){
    $condition.=" OR metadata like \"%$uol_metadata_arr[$i]%\" ";
 }
 $query.=$condition;
 $result=mysql_query($query);

Так, вот почему я должен знать, какой длины моя строка $query может быть, потому что $uol_metadata_arr массива мог содержать много объектов.

8
задан Bakhtiyor 4 September 2013 в 15:37
поделиться

2 ответа

  1. (если возможно) Используйте WHERE metadata IN ('value1', 'value2')
  2. Возможно, вам потребуется увеличить max_allowed_packet. По умолчанию он равен 16 МБ (на стороне клиента, а в старых версиях - 1 МБ на стороне сервера), и не так уж сложно составить запрос, который упирается в этот предел (например, импорт данных из другого места с помощью гигантского INSERT запроса)

LIKE '%string%' является убийцей производительности. Такой запрос не может использовать индекс на этом столбце. LIKE 'string%', с другой стороны, является индексируемым

16
ответ дан 5 December 2019 в 07:57
поделиться

См. Глобальную переменную max_allowed_packet . Вам понадобится доступ к файлу my.cnf, чтобы настроить его (а также необходимо настроить его на вашем клиенте). Типичные значения по умолчанию: 1 или 16 МБ ...

5
ответ дан 5 December 2019 в 07:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: