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 件のコメント:
コメントを投稿