Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 多表与索引行_Sql_Database_Performance_Postgresql_Schema - Fatal编程技术网

Sql 多表与索引行

Sql 多表与索引行,sql,database,performance,postgresql,schema,Sql,Database,Performance,Postgresql,Schema,我有一个问题是在最近与一位同事的讨论中提出的 假设您有一个包含100000000行的表,并且这些行中的每一行都有一个索引列(varchar)。此列有1000个唯一值,因此每个值都有100000行与其相关。我希望找到与唯一值之一相关的所有行(我将提供所述值),但还需要一些额外的过滤逻辑(不重要) 在1000个不同的表中存储100000行,只搜索我需要的表,或者使用上面列出的方法,是更快、更慢还是同样快 假设所有表都具有相同的模式。只搜索所需的表会更快。这就像是在问,是搜索一本书的章节更快,还是只得

我有一个问题是在最近与一位同事的讨论中提出的

假设您有一个包含100000000行的表,并且这些行中的每一行都有一个索引列(varchar)。此列有1000个唯一值,因此每个值都有100000行与其相关。我希望找到与唯一值之一相关的所有行(我将提供所述值),但还需要一些额外的过滤逻辑(不重要)

在1000个不同的表中存储100000行,只搜索我需要的表,或者使用上面列出的方法,是更快、更慢还是同样快


假设所有表都具有相同的模式。

只搜索所需的表会更快。这就像是在问,是搜索一本书的章节更快,还是只得到一本只有章节的书

然而,这是错误的引导。如何确定要查询的表?1000条IF语句,或者一个IF语句的二叉树,以便在10跳内到达那里?无论您编写什么,我都不希望它们中的任何一个比使用统一表的索引更快

更不用说1000张桌子的杂乱了



分区数据有一个参数(以及时间和地点),但这是一个非常糟糕的示例。

只搜索所需的表会更快。这就像是在问,是搜索一本书的章节更快,还是只得到一本只有章节的书

然而,这是错误的引导。如何确定要查询的表?1000条IF语句,或者一个IF语句的二叉树,以便在10跳内到达那里?无论您编写什么,我都不希望它们中的任何一个比使用统一表的索引更快

更不用说1000张桌子的杂乱了



有一个参数(和一个时间和地点)来划分数据,但是这是一个很差的例子。< /P> + 1,此外,查询优化器真的不喜欢大量表的查询。如果有100000个重复的完全相同的值,你可以考虑把它拖到一个单独的表中,并创建一个(整数标识)。外键引用它。额外表的额外成本很可能是因为必须处理更少的字符串比较;Garuanted数据完整性是一个很好的副作用。(我假设筛选是在字符串上进行的……但不管怎样,整数比较会更好吗?)@X-Zero:1000个不同的值,整数比较的性能优势可能会被关联的连接需求所抵消。也就是说,尽可能避免使用字符串作为标识符仍然是(imo)的最佳做法。@Dems-#headdesk#你说得对,我认为索引仍然需要手动比较每一行,但它只能从索引中获取(有效顺序)列表。但是,(通常)没有理由使用字符串作为(在数据库中)标识符。@ DEMS,那么你会考虑这两种技术(速度方面)的差异是否微不足道,即使你知道要查询什么表?+ 1,此外,查询优化器真的不喜欢大量表的查询。如果有100000个重复的完全相同的值,您可以考虑将其取出到一个分离的表中,并创建一个(整数标识)外键引用。额外表的额外成本很可能是因为必须处理更少的字符串比较;Garuanted数据完整性是一个很好的副作用。(我假设筛选是在字符串上进行的……但不管怎样,整数比较会更好吗?)@X-Zero:1000个不同的值,整数比较的性能优势可能会被关联的连接需求所抵消。也就是说,尽可能避免使用字符串作为标识符仍然是(imo)的最佳做法。@Dems-#headdesk#你说得对,我认为索引仍然需要手动比较每一行,但它只能从索引中获取(有效顺序)列表。但是,(通常)没有理由使用字符串作为(在数据库中)标识符。@ DEMS,那么你会考虑这两种技术(速度方面)的差别是否微不足道,即使你知道要查询什么表吗?