【问题标题】:HASH+ASC compound index in YugabyteDB YSQL?YugabyteDB MYSQL中的HASH+ASC复合索引?
【发布时间】:2022-07-20 00:31:50
【问题描述】:

[用户在YugabyteDB Community Slack上发布的问题]

以下索引是否有效,是否适合该用例?

CREATE INDEX 命令(非常棒)允许您指定是否希望索引基于散列(用于点查找)或范围。 HASH | ASC | DESC 附加到每个 index_elem(已编入索引的列)...我的阅读告诉我,可以创建一个索引,其中第一列通过哈希索引,第二列是范围? https://docs.yugabyte.com/preview/api/ysql/the-sql-language/statements/ddl_create_index/ 例如:

CREATE INDEX task_queue_idx ON task_queue_entries (
  task_queue_id HASH,
  maturation_time ASC
) WHERE ....;

(注意task_queue_idHASHmaturation_timeASC

查询模式类似于

SELECT * from task_queue_entries WHERE task_queue_id = 'foo' AND maturation_time <= NOW() FOR UPDATE SKIP LOCKED LIMIT 1. 

会有数千个独特的task_queue_idtask_queue_entries 表中的每个条目可能有不同的成熟时间。

【问题讨论】:

    标签: yugabytedb


    【解决方案1】:

    是的。拥有 HASH+ASC 复合(多列)索引是非常合理的。第一部分是 HASH(并假设您有 1000 个唯一的队列 ID)确保您的索引没有热点(在写入和读取期间) .

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 2017-12-03
      相关资源
      最近更新 更多