要求に応じて0-9またはa-zで始まるタイトルを返すクエリを作成しています。番号については最初の文字が数字であるところを選択
SELECT * FROM table WHERE title LIKE 'a%';
SELECT * FROM table WHERE title LIKE 'b%';
SELECT * FROM table WHERE title LIKE 'c%';
/* etc... */
を、しかし、本当に問題で、それがある数、それが唯一の最初の文字であることを重要しません:私はやっている個々の文字のためので、私はtitle
列に索引を持っています数値。私は次のようなものを求めています:
SELECT * FROM table WHERE title LIKE '0%'
OR title LIKE '1%';
OR title LIKE '2%';
OR title LIKE '3%';
/* etc... */
しかし、これはちょっとうんざりです。私の理解には、正規表現は実際にはインデックスではうまくいかず、文字列関数についてはわかりません。 WHERE SUBSTRING(title,1,1) IN (0,1,2,3,4,5,6,7,8,9)
のようなものはまだインデックスを利用していますか、これを行うためのよりコンパクトな方法がありますか?
ニースとシンプルなソリューション。 +1 – GurV