列id、name、およびUCIdを持つCompaniesテーブルを考えてみましょう。UCIdの数値部分が数字の文字列と一致する会社を見つけようとしています。
UCIは通常XY123456のように見えますが、ユーザー入力であり、ユーザーはランダムなスペースを残したり、XYに入らないこともあるので、そのままにしておきたいと考えています。私が言っているのは、標準的なパターンを強制することはできないということです。彼らはそれを自分たちのやり方で入力し、それを自分たちのやり方で読みたいと思っています。そのため、whereセクションで関数を使用する必要があります。
これらのクエリをmysqlで使用できないほど長くかからないようにする方法はありますか?使用する機能とそのすべてを知っているので、少なくとも比較的高速に検索を行う方法が必要です。UCIdにすでに適用されている関数を使用してカスタムインデックスを作成できますか?
参考までに、使用したいクエリの例
SELECT *
FROM Companies
WHERE digits_only(UCId) = 'some_digits.'
通常、Companiesテーブルには数万の行があり、場合によってはクエリを繰り返し実行する必要があることを付け加えておきます。そのため、高速なソリューションが必要です。