Может вести себя по разному в зависимости от драйвера и ATTR_EMULATE_PREPARES.
В частности, mysql может в итоге получить запрос с limit '10' вместо limit 10 и дать за это синтаксическую ошибку. Потому что по синтаксису здесь должно быть число, а не строка.
Или потому что вам понадобится PARAM_LOB или INOUT параметр - execute с этим не справится. Хотя в большинстве случаев execute будет достаточно.
Perun пишет:
Какие например драйверы?
Хранимые процедуры пока что - темный лес...
Ну вот когда понадобятся хранимые процедуры - тогда и будете узнавать как с INOUT параметрами этой СУБД работать из PHP.
Не имеет смысла заходить с обратной стороны и сначала выяснять для каких драйверов реализованы PARAM_INPUT_OUTPUT.
В отсутствии модификатора s точка не включает в себя переносы строк.
Цитата:
s (PCRE_DOTALL)
If this modifier is set, a dot metacharacter in the pattern matches all characters, including newlines. Without it, newlines are excluded.
Несколько странная идея длину текста проверять регуляркой. Чего не mb_strlen?
Если проверять нужно в отсортированном списке мест - то и передайте из конфигурации отсортированный список мест. С точки зрения php - массивом или каким-либо другим итератором и обойдите их в цикле.
Замечательно ускорилось, так и оставьте. Что тут ещё сказать. (до редактирования было приведено время выполнения explain) (Добавление)
Аллилуйя, explain. И даже понятно какой субд, хоть это так и назвали.
Покажите индексы. Впрочем план адекватный, на порядок производительность уже не улучшить будет.
Vladimir Kheifets, это вполне резонный вариант для экспорта данных в TSV формате.
Но не для поиска. То что у вас источник данных в таком виде не оправдание для лютых костылей в своей системе.