这里有张桌子:
CREATE TABLE `test` (
`thing` int(10) unsigned NOT NULL,
`price` decimal(10,2) unsigned NOT NULL,
PRIMARY KEY (`thing`,`price`),
KEY `thing` (`thing`),
KEY `price` (`price`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
以及那里的一些价值观:
INSERT INTO test(thing,price)
VALUES
(1,5.00),
(2,7.50),
(3,8.70),
(4,9.00),
(5,9.50),
(6,9.75),
(7,10.00),
(8,10.50),
(9,10.75),
(10,11.00),
(11,11.25);
我想price
从这张表中得到一个 MINIMAL,比说,更多9.2
- 那是(5,9.50)
记录。所以,我这样做:
SELECT thing, price FROM test WHERE price > 9.2 ORDER BY price LIMIT 1
。它的 EXPLAIN 输出表明 MySQL 遍历了超过 9.2 的所有 7 行:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE test range price price 5 \N 7 Using where; Using index
有没有办法以某种方式加快速度?这样 MySQL 会给我一个比我的条件多一点的记录吗?
在此先感谢您的帮助!