Index の使い方、where a.カラム1 LIKE CONCAT
Index の使い方、where a.カラム1 LIKE CONCAT(b.カラム2,'%')
お世話になります。
テーブルA:
id phone
-----------------------------------
1 819011112222
2 819022223333
3 81312345678
4 651112222
5 8699998888
6 819011112222
テーブルB:
id Name Pref
---------------------------------------------------
1 Japan-1 8131234
2 JP-Mobile 8190
3 China-1 869
4 China-2 868
5 Japan-2 813
6 Japan 81
7 Singapore 65
このようなテーブルで、テーブルBはレコード数が数千件あります。
数千件でしたし、データを取るのに遅いとは思いますが、
なんとか耐えらえた範囲なので下記のように実行しておりました。
select a.*,b.Name,b.Pref
FROM テーブルA a, テーブルB b
where a.phone LIKE CONCAT(Pref,'%')
group by a.id;
結果
id phone Name
----------------------------------------------------
1 819011112222 JP-Mobile
2 819022223333 JP-Mobile
3 81312345678 Japan-2
4 651112222 Singapore
5 8699998888 China-1
5 862223333 China-2
6 819011112222 JP-Mobile
テーブルB Prefに対してIndexを作成していますが、どうも作動していないようです。
Indexに関してよく理解できていなかったので、気にしていなかったのですが、今回早さを比べる為に
Indexあり、なしで試しみても大して変っていませんでした。
今のところ、Indexを使えていなくても問題ないのですが、今後テーブルBのデータが数万件に増えてしまい、今までのやり方が通用しません。
効果的に使用する方法をアドバイス頂けませんでしょうか。
よろしくお願いします。
お礼
回答ありがとうございます。 お礼の遅くなりましたことをおわびいたします。