arrays - IN(数组)在 PostgreSQL 中的性能

标签 arrays postgresql sorting

比如我有这张表

Person
id: integer (primary key)
name: varchar
workplace_id: integer

我想找到在某些地方工作的人的名字,所以我使用了这个查询

SELECT name FROM Person WHERE workplace_id IN(/*values*/)

首先对值进行排序更好吗?或者对值进行排序不会对性能产生任何影响? IN 运算符的时间复杂度如何?如果排序能带来更好的性能,它是否被认为是过早的优化并且应该避免?

最佳答案

对值列表进行排序可能会造成净损失,因为排序会花费时间,而列表的排序不会影响性能。

最好的优化是在 workplace_id 上建立索引。

如果值的数量确实很大,最好使用列表值创建一个临时表并将该表与您的表连接起来。

要测试所有这些选项,请使用 EXPLAINEXPLAIN (ANALYZE) 这样数据库会告诉您它如何解决问题以及每个步骤需要多长时间。

关于arrays - IN(数组)在 PostgreSQL 中的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39956642/

相关文章:

c - 返回一个二维字符数组

SQL 从给定的零件列表中创建完整的零件列表(迭代)

python - 为什么没有桶排序库(或者有?)

sql - 在 SELECT 查询中循环遍历 PostgreSQL 数组,而不是在 PLPGSQL 函数中循环

ios - 如何对 NSArray 中的两个不同对象进行排序?

c - 插入排序运行时错误

java - getRaster 方法中出现数组越界异常

android - 如何从for循环中传递三个字符串

jquery - 使用 jQuery 将子元素插入全局数组

postgresql - 如何在 Doctrine 2 中使用 "DISTINCT ON (field)"?