gpt4 book ai didi

postgresql - 在索引列上优化使用 LIKE

转载 作者:行者123 更新时间:2023-11-29 12:03:52 24 4
gpt4 key购买 nike

我有一个大表(+- 100 万行,7 列,包括主键)。该表包含两列(即:symbol_01symbol_02),它们被索引并用于查询。该表包含如下行:

id    symbol_01    symbol_02   value_01  value_02
1 aaa bbb 12 15
2 bbb aaa 12 15
3 ccc ddd 20 50
4 ddd ccc 20 50

根据示例,第 1 行和第 2 行是相同的,除了 symbol_01symbol_02 被交换但它们具有相同的值 value_01值_02。第 3 行和第 4 行也是如此。整个表格都是这种情况,symbol_01+symbol_02 的每个组合基本上有两行。

我需要想出一个更好的方法来处理这个问题以消除重复。到目前为止,我正在考虑的解决方案是只有一个名为 symbol 的列,它将是两个符号的组合,因此表格如下:

id    symbol       value_01   value_02
1 ,aaa,bbb, 12 15
2 ,ccc,ddd, 20 50

这会将行数减半。作为旁注,symbol 列中的每个值都是唯一的。使用这两个符号总是需要查询结果,所以我会这样做:

select value_01, value_02
from my_table
where symbol like '%,aaa,%' and symbol like '%,bbb,%'

这可行,但我的问题是关于性能。这仍然是一张大 table (并且很快就会变大)。所以我的问题是,鉴于 symbol 将被索引,每个 symbol 组合都是唯一的,我需要使用 LIKE 查询结果。

有更好的方法吗?我不确定 LIKE 对性能有多好,但我没有看到替代方案?

最佳答案

没有高性能解决方案,因为您的问题是将多个值硬塞到一列中。

创建一个子表(使用当前/主表的外键)以单独保存您要搜索的所有单个值,索引该列,您的查询将很简单而且速度很快。

关于postgresql - 在索引列上优化使用 LIKE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38882700/

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