タイトルの通り
MySQLのChar型は”(ダブルクォーテーション)ではなく'(シングルクォーテーション)で囲ってSELECT
しなければなりません。
正確には、そうしなければパフォーマンスが大幅に低下します。
問題は、”(ダブルクォーテーション)でもselectできてしまう点です。
以下のようなテーブルがあったとします。
mysql# desc sample_table; +-------------+---------------------+------+-----+-------------------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | +-------------+---------------------+------+-----+-------------------+-----------------------------+ | id | char(16) | NO | PRI | NULL | | | name | char(25) unsigned | NO | MUL | 0 | | | create_date | datetime | NO | | NULL | | | delete_date | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | +-------------+---------------------+------+-----+-------------------+-----------------------------+ 4 rows in set (0.00 sec)
以下のSELECTだと1行のデータは非常にすくなくいのですが2000万件近くになると、インデックスが効いていても5~6秒かかります。
mysql -h 192.168.1.10 -u user -ppasswd -e "select id from sampleDB.sample_table where id ="1234567890123456"";
“(ダブルクォーテーション)ではなく'(シングルクォーテーション)に変更すると、一瞬です :x002:
mysql -h 192.168.1.10 -u user -ppasswd -e "select id from sampleDB.sample_table where id ='1234567890123456'";