Сделать 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 строк).
Есть ли более элегантный способ сделать его нечувствительным к регистру, который не сильно повлияет на производительность?