【问题标题】:Indexing Column for LIKE styled query on very Large data set [duplicate]超大型数据集上 LIKE 样式查询的索引列 [重复]
【发布时间】:2019-09-30 03:27:00
【问题描述】:

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

我的数据是 Stock 选项,其中复合键是这样的: AAPL.US,其中 AAPL ( apple ) 是股票的符号,US 是股票交易的地区。

当尝试使用复合键(例如

)进行自定义查询时

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

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

我正在尝试找到一种方法来索引该进程,因为它看起来可以被固定。

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

我试过用这种方式索引“复合键”,但效果不大

CREATE INDEX idx_composit ON stock_prices(composit);

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

【问题讨论】:

标签: postgresql indexing


【解决方案1】:

您可以尝试使用基于函数的索引使其可搜索:

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

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

db<>fiddle demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 2020-09-07
    • 2012-04-23
    相关资源
    最近更新 更多