gpt4 book ai didi

PostgreSQL 索引优化

转载 作者:行者123 更新时间:2023-11-29 12:22:23 26 4
gpt4 key购买 nike

目前我有以下 SQL Select 语句的索引。尽管如此,查询对我来说似乎仍然很慢(10.000 条记录)。你有什么建议吗?

  1. 索引category_id
  2. 索引交货日期
  3. product_id、product_name 的索引

这是我的 DDL:

Create table product (    
product_id serial,
category_id int2,
product_name varchar(50),
delivery_date timestamp,
subtitle varchar(20),
price numeric(10,2),
retail_price numeric(10,2),
language_id int2,
store_id int2,
reseller_id int2
);

和SQL:

Select * 
from product
WHERE delivery_date > '2012-10-20 06:00:00' AND category_id = 1
ORDER BY product_id, product_name;

如有任何帮助,我们将不胜感激。

在 EXPLAIN ANALYZE 的输出下面:

Sort  (cost=18.11..18.12 rows=1 width=119) (actual time=0.064..0.064 rows=0 loops=1)
Sort Key: product_id, product_name
Sort Method: quicksort Memory: 25kB
-> Seq Scan on product (cost=0.00..18.10 rows=1 width=119) (actual time=0.019..0.019 rows=0 loops=1)
Filter: ((delivery_date > '2012-10-20 06:00:00'::timestamp without time zone) AND (category_id = 1))
Total runtime: 0.098 ms

最佳答案

绝对理想的查询配置是为 (delivery_date, category_id, product_id) 设置复合索引或 (category_id, delivery_date, product_id) .

实际上,只有 (category_id, product_id) 有索引可能足以获得可接受的性能。

无论如何,EXPLAIN ANALYZE <original_query>是你最好的 friend 。

请注意:在您的查询中,ORDER BY product_id, product_name总是会得到与简单 ORDER BY product_id 相同的结果.

关于PostgreSQL 索引优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12989773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com