2012年1月31日火曜日

[memo] MySQL の BETWEEN 演算子について

CREATE TABLE `interval_test` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `period_from` datetime DEFAULT NULL,
  `period_to` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `Index_2` (`period_from`,`period_to`)
) ENGINE=InnoDB DEFAULT CHARSET=ujis;
こんなテーブルで、以下のようなSQLを実行してみると
mysql> EXPLAIN SELECT * FROM interval_test WHERE now() BETWEEN period_from AND period_to;
+----+-------------+---------------+-------+---------------+---------+---------+------+------+--------------------------+
| id | select_type | table         | type  | possible_keys | key     | key_len | ref  | rows | Extra                    |
+----+-------------+---------------+-------+---------------+---------+---------+------+------+--------------------------+
|  1 | SIMPLE      | interval_test | range | Index_2       | Index_2 | 9       | NULL |   50 | Using where; Using index |
+----+-------------+---------------+-------+---------------+---------+---------+------+------+--------------------------+
1 row in set (0.00 sec)
こんな書き方が出来ることにも驚いたけど、インデックスもちゃんと使っててさらに驚いたりなんかしたので、メモ。

0 件のコメント:

コメントを投稿