机がある:
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 が私の状態よりも少し多いレコードを 1 つ与えるにはどうすればよいでしょうか?
よろしくお願いします。