在非常大的数据集上进行类似样式查询的索引列



我有一个大约700亿行的Postgres表。我从来没有使用过如此大量的数据。

我的数据是库存选项,其中composit键是这样:aapl.us aapl(苹果(股票的象征和我们交易的地区。

尝试使用COMPOSIT键进行自定义查询时,例如

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

实际上,它通常很慢,因为它太长了,所以崩溃了。最好的至少10-15分钟。

我试图找到一种方法来索引该过程,因为它看起来可以固定。

总共有700万行大约有70个左右的"区域"。

我尝试过这种方式索引" Composit键",但这并没有做太多

CREATE INDEX idx_composit ON stock_prices(composit);

数据集上的任何查询至少要慢一点,所以我这样做的目的是能够以更好的方式"组织"我的数据以进行后续查询,以便任何简单的查询都不需要〜15。分钟 /崩溃。

您可以尝试通过使用基于函数的索引来使其可鲁gs:

CREATE INDEX idx ON stock_prices(REVERSE(composit));
SELECT * FROM stock_prices WHERE REVERSE(composit) LIKE REVERSE('%.US');

db<>小提琴演示

最新更新