我有一个约有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个时间分钟+++ /崩溃。
答案 0 :(得分:1)
您可以尝试使用基于函数的索引使其变得可保存:
CREATE INDEX idx ON stock_prices(REVERSE(composit));
SELECT * FROM stock_prices WHERE REVERSE(composit) LIKE REVERSE('%.US');