Сделать Collection::find() нечувствительным к регистру в MySQL X DevAPI

В старом добром традиционном MySQL LIKEПо умолчанию оператор не чувствителен к регистру, но вы можете элегантно сделать его чувствительным к регистру, добавив COLLATION следующим образом:

col_name LIKE 'a%' COLLATE utf8mb4_0900_as_cs

Напротив, я обнаружил, что новый X DevAPI Collection::find()Метод по умолчанию чувствителен к регистру (не задокументирован), но не принимает сопоставление.

Я могу смоделировать нечувствительность к регистру, переведя его в нижний регистр следующим образом:

$collection->find('LOWER(name) LIKE :param')
            ->bind(['param' => '%ce%'])
            ->sort('name ASC')
            ->execute();

Но даже с индексом в этом столбце он делает его намного медленнее (до 3 раз медленнее, чем тот же запрос в традиционном столбце с использованием примерного набора из 10000 строк).

Есть ли более элегантный способ сделать его нечувствительным к регистру, который не сильно повлияет на производительность?

0 ответов

Другие вопросы по тегам