小编Sur*_*rma的帖子

Postgres 不使用索引对数据进行排序

我有一个learners大约有 320 万行的表。该表包含用户相关信息,例如姓名和电子邮件。我需要优化一些在某些列上使用 order by 的查询。因此,为了进行测试,我创建了一个temp_learners包含 80 万行的表。我在此表上创建了两个索引:

CREATE UNIQUE INDEX "temp_learners_companyId_userId_idx"
  ON temp_learners ("companyId" ASC, "userId" ASC, "learnerUserName" ASC, "learnerEmailId" ASC);
Run Code Online (Sandbox Code Playgroud)

CREATE INDEX temp_learners_company_name_email_index
  ON temp_learners ("companyId", "learnerUserName", "learnerEmailId");
Run Code Online (Sandbox Code Playgroud)

第二个索引仅用于测试。现在当我运行这个查询时:

SELECT *
FROM temp_learners
WHERE "companyId" = 909666665757230431 AND "userId" IN (
                                                        4990609084216745771,
                                                        4990610022492247987,
                                                        4990609742667096366,
                                                        4990609476136523663,
                                                        5451985767018841230,
                                                        5451985767078553638,
                                                        5270390122102920730,
                                                        4763688819142650938,
                                                        5056979692501246449,
                                                        5279569274741647114,
                                                        5031660827132289520,
                                                        4862889373349389098,
                                                        5299864070077160421,
                                                        4740222596778406913,
                                                        5320170488686569878,
                                                        5270367618320474818,
                                                        5320170488587895729,
                                                        5228888485293847415,
                                                        4778050469432720821,
                                                        5270392314970177842,
                                                        4849087862439244546,
                                                        5270392117430427860,
                                                        5270351184072717902,
                                                        5330263074228870897,
                                                        4763688829301614114,
                                                        4763684609695916489,
                                                        5270390232949727716
  ) ORDER BY "learnerUserName","learnerEmailId";
Run Code Online (Sandbox Code Playgroud)

db使用的查询计划是这样的: …

postgresql indexing sql-order-by

2
推荐指数
1
解决办法
9218
查看次数

标签 统计

indexing ×1

postgresql ×1

sql-order-by ×1