猫型iPS細胞研究所

Windows、Linux、iOS、DB、Network

DataBase MySQL

MySQLのChar型は”(ダブルクォーテーション)ではなく'(シングルクォーテーション)でSELECT

投稿日:2013年2月23日 更新日:

タイトルの通り
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'";

Gooleアドセンス用336

Gooleアドセンス用336

-DataBase, MySQL

執筆者:

関連記事

mysql

MySQLが起動できない

エラーログには下記ログが大量に出力されて起動できない・・・。 2013-08-22 17:32:10 30137 [ERROR] InnoDB: Unable to lock ./ibdata1, e …

mysql

MySQL ERROR: Can’t connect to MySQL server on ‘xxx.xxx.x.xx’ (13)

MySQL ERROR: Can’t connect to MySQL server on ‘xxx.xxx.xxx.xxx’ (13) はSELinuxによる接続 …

sqlserver

SQL Server Browser を起動する方法

SQL Server構成マネージャーより起動できるはずが、なぜか開始も停止もできない。 コントロール パネル > システムとセキュリティ > 管理ツール > サービス を見ると、SQL Server …

mysql

MySQLで相関サブクエリを実行する

相関サブクエリとは、SQLの実行結果の行と行を比較することです。 ある行とある行の時間差を求めることで何秒間隔でデータが登録されているかがわかったり、 ある行とある行の売上差を求めることで、売上の上が …

mysql

MySQLのインポートエラー ERROR 1005 (HY000) (errno: 121)

ダンプをインポートする際にたまにるのがこのエラーです。 ERROR 1005 (HY000) at line 23: Can’t create table ‘./[スキーマ]/ …