针对非常大的数据集的LIKE样式查询的索引列

时间:2019-05-13 07:43:02

标签: postgresql indexing

我有一个约有7000万行的Postgres表。我以前从未处理过如此大的数据。

我的数据是“股票”期权,其中的合成键如下所示: AAPL.US,其中AAPL(苹果)是股票的象征,而美国则是交易区域。

当尝试使用诸如

之类的组合键进行自定义查询时

SELECT * FROM stock_prices WHERE composit LIKE '%.US'

它太慢了,实际上经常因为太长而崩溃。最好至少10-15分钟。

由于它似乎可以固定,我正在尝试寻找一种方法编制索引。

只有大约70个左右的不同“区域”,总计7000万行。

我已经尝试过以这种方式为“复合键”建立索引,但这并没有太大作用

CREATE INDEX idx_composit ON stock_prices(composit);

至少可以说,数据集上的任何查询都非常慢,因此,我这样做的目的是能够以更好的方式“组织”我的数据以进行后续查询,从而使任何简单的查询都不会花费约15个时间分钟+++ /崩溃。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用基于函数的索引使其变得可保存:

CREATE INDEX idx ON stock_prices(REVERSE(composit));

SELECT * FROM stock_prices WHERE REVERSE(composit) LIKE REVERSE('%.US');

db<>fiddle demo