Sql 喜欢100k记录上的两列还是200k记录上的一列更快?
假设我有一个包含Sql 喜欢100k记录上的两列还是200k记录上的一列更快?,sql,performance,postgresql,database-design,indexing,Sql,Performance,Postgresql,Database Design,Indexing,假设我有一个包含列a和列b的表,其中包含100k条记录。 我需要匹配列a或列b 创建一个只包含一个要匹配的列但包含两个记录的新表会更快吗? 与此相反: table_a id column_a column_b -- -------- -------- 1 foo bar SELECT ... WHERE "column_a" LIKE '%blah%' OR "column_b" LIKE '%blah%' # will iterate through 100k re
列a
和列b
的表,其中包含100k条记录。
我需要匹配列a
或列b
创建一个只包含一个要匹配的列但包含两个记录的新表会更快吗?与此相反:
table_a
id column_a column_b
-- -------- --------
1 foo bar
SELECT ... WHERE "column_a" LIKE '%blah%' OR "column_b" LIKE '%blah%'
# will iterate through 100k records
我要这个:
table_b
id column
-- ------
1 foo
2 bar
SELECT ... WHERE "column" LIKE '%blah%'
# will iterate through 200k records
什么更便宜,文本匹配还是迭代?这还取决于列类型、列大小、数据分布、表中的其他列等等。我猜你只是太懒了,没有告诉我们那些无聊的细节 一般来说,最快的方法是
表b
,用a来支持非锚定的类
表达式。指数起了作用。而查询样式将是另一个重要因素。利用限制1
或存在用于表b
在这个密切相关的答案中有更多细节:
我只是懒得写一个更详细的答案。运行测试。:) 它还取决于列类型、列大小、数据分布、表中的其他列等。我猜你只是太懒了,没有告诉我们那些无聊的细节
一般来说,最快的方法是表b
,用a来支持非锚定的类
表达式。指数起了作用。而查询样式将是另一个重要因素。利用限制1
或存在用于表b
在这个密切相关的答案中有更多细节:
我只是懒得写一个更详细的答案。运行测试。:) 亲爱的投票人,你能评论一下你的辛勤工作吗?不是投票人,但是“太懒了,不想写测试,所以会在这里提问”不是一个好的提问方式。不仅是“太懒了,不想写测试,所以会在这里提问…”是一个糟糕的提问方式,而且像这样的绩效问题你必须自己去尝试,因为有太多的变量会影响性能。我应该用更好的措辞——我猜否决票是因为缺乏研究。我没有否决票,但我猜这是因为你的第一行太懒了,无法编写测试,所以我会在这里问…:)如果你太懒了,他们为什么要为你做这些工作?听起来你完全有能力进行测试……亲爱的投票人,你能评论一下你的努力吗?不是投票人,但“太懒了,不想写测试,所以会在这里提问”不是一个好的提问方式。不仅是“太懒了,不想写测试,所以会在这里提问…”是一个糟糕的提问方式,但是像这样的性能问题你必须自己去尝试,因为有太多的变量会影响性能。我应该用更好的措辞——我猜否决票是因为缺乏研究。我没有否决票,但我猜是因为你的第一行太懒了,没有写测试,所以我会在这里问……:)如果你太懒了,他们为什么要为你做这些工作?听起来您完全有能力执行测试…@slivu请注意,GIN
trigram索引仅在最新的PostgreSQL版本上受支持,您可能需要升级。你没有包括你的PostgreSQL版本,所以我不能肯定地告诉你;请查看发行说明以查看哪些版本具有适当的支持。@请注意,GIN
trigram索引仅在最新的PostgreSQL版本上受支持,您可能需要升级。你没有包括你的PostgreSQL版本,所以我不能肯定地告诉你;查看发行说明,了解哪些版本具有适当的支持。