SQLは非常に簡単です。 "orders_express_idx" btree(express)。 expressはインデックスです。データがない場合、使用制限は非常に遅い
がうまく機能します。 express aが存在するためです。
select * from orders where express = 'a' order by id desc limit 1;
Limit (cost=0.43..1.29 rows=1 width=119)
-> Index Scan Backward using orders_pkey on orders (cost=0.43..4085057.23 rows=4793692 width=119)
Filter: ((express)::text = 'a'::text)
が遅くなります。データは存在しません。私は限界を使う。
select * from orders where express = 'b' order by id desc limit 1;
Limit (cost=0.43..648.86 rows=1 width=119)
-> Index Scan Backward using orders_pkey on orders (cost=0.43..4085061.83 rows=6300 width=119)
Filter: ((express)::text = 'a'::text)
がうまくいきます。データは存在しません。私は限界を使用していませんでした。
select * from orders where express = 'b' order by id desc;
Sort (cost=24230.91..24246.66 rows=6300 width=119)
Sort Key: id
-> Index Scan using orders_express_idx on orders (cost=0.56..23833.35 rows=6300 width=119)
Index Cond: ((express)::text = 'a'::text)
また、クエリプランも含めてください( 'EXPLAIN SELECT ...')。 –
リミットを使用してもクエリの実行が速くなるわけではなく、特定の時間に行を返すことを止めます。内部キャッシュに制限をかけずに実行します – apokryfos
** [EDIT]テーブルを作成する 'テーブル 'orders'(すべてのインデックスを含む)と** explain(analyze、verbose)**を使用して生成された実行プランのステートメントです。 [**フォーマットされたテキスト**](http://stackoverflow.com/help/formatting)、[スクリーンショットなし](http://meta.stackoverflow.com/questions/285551/why-may-i-not -upload-images-of-code-on-so-asking-a-question/285557#285557) –