Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql e关于指数;诚然,拥有部分索引是正确的解决方案,但即使这样,联接的第一阶段也只需要访问一个索引。除非所选的附加列的成本使得进行顺序扫描是值得的,但这是另一个问题。@LaurenzAlbe wait,这是一个误解。我不打算依赖于ORDER BY的索引——我只_Sql_Database_Postgresql - Fatal编程技术网

Sql e关于指数;诚然,拥有部分索引是正确的解决方案,但即使这样,联接的第一阶段也只需要访问一个索引。除非所选的附加列的成本使得进行顺序扫描是值得的,但这是另一个问题。@LaurenzAlbe wait,这是一个误解。我不打算依赖于ORDER BY的索引——我只

Sql e关于指数;诚然,拥有部分索引是正确的解决方案,但即使这样,联接的第一阶段也只需要访问一个索引。除非所选的附加列的成本使得进行顺序扫描是值得的,但这是另一个问题。@LaurenzAlbe wait,这是一个误解。我不打算依赖于ORDER BY的索引——我只,sql,database,postgresql,Sql,Database,Postgresql,e关于指数;诚然,拥有部分索引是正确的解决方案,但即使这样,联接的第一阶段也只需要访问一个索引。除非所选的附加列的成本使得进行顺序扫描是值得的,但这是另一个问题。@LaurenzAlbe wait,这是一个误解。我不打算依赖于ORDER BY的索引——我只希望它用于数据。如果您愿意,使用覆盖索引的方式也是一样的。优点是orderby不需要访问表。我仍然希望服务器需要对索引进行完整扫描,这是给定的(添加到答案中以便更清晰)。感谢澄清。泰,我会尝试!是的,它正在工作!!!非常感谢你!在这种情况下,您


e关于指数;诚然,拥有部分索引是正确的解决方案,但即使这样,联接的第一阶段也只需要访问一个索引。除非所选的附加列的成本使得进行顺序扫描是值得的,但这是另一个问题。@LaurenzAlbe wait,这是一个误解。我不打算依赖于ORDER BY的索引——我只希望它用于数据。如果您愿意,使用覆盖索引的方式也是一样的。优点是orderby不需要访问表。我仍然希望服务器需要对索引进行完整扫描,这是给定的(添加到答案中以便更清晰)。感谢澄清。泰,我会尝试!是的,它正在工作!!!非常感谢你!在这种情况下,您的索引不能同时支持
WHERE
条件和
ORDER BY
。@LaurenzAlbe我知道,并且在建议3中提到,他们需要使用
联合
来使用索引的两列,这与您的回答类似。不过,我想我还不够清楚。
SELECT *
     FROM "refuel_request" AS "refuel_request"
     LEFT OUTER JOIN "user" AS "user" ON "refuel_request"."user_id" = "user"."user_id"
     LEFT OUTER JOIN "bill_qr" AS "bill_qr" ON "refuel_request"."bill_qr_id" = "bill_qr"."bill_qr_id"
     LEFT OUTER JOIN "car" AS "order.car" ON "refuel_request"."car_id" = "order.car"."car_id" 
     LEFT OUTER JOIN "refuel_request_status" AS "refuel_request_status" ON "refuel_request"."refuel_request_status_id" = "refuel_request_status"."refuel_request_status_id"
     WHERE
      refuel_request."refuel_request_status_id" IN ( '1', '2', '3') 
     ORDER BY "refuel_request".created_at desc
     LIMIT 10 
 LEFT OUTER JOIN "user" AS "user" ON "refuel_request"."user_id" = "user"."user_id"
 LEFT OUTER JOIN "bill_qr" AS "bill_qr" ON "refuel_request"."bill_qr_id" = 
 LEFT OUTER JOIN "car" AS "order.car" ON "refuel_request"."car_id" = 
 LEFT OUTER JOIN "refuel_request_status" AS "refuel_request_status" ON "refuel_request"."refuel_request_status_id" =
 WHERE
  refuel_request."refuel_request_status_id" IN ( '1', '2', '3') 
 ORDER BY "refuel_request".created_at desc
 refuel_request_status_id, created_at, bill_qr_id, car_id too, user_id
 ^ WHERE                   ^ ORDER     ^ used by the JOINS
CREATE INDEX idx ON refuel_request (created_at DESC)
                 WHERE refuel_request_status_id IN (1, 2, 3);
CREATE INDEX ON refuel_request (refuel_request_status_id, created_at);
CREATE INDEX ON "user" (user_id);
CREATE INDEX ON bill_qr (bill_qr_id);
CREATE INDEX ON car (car_id);
CREATE INDEX ON refuel_request_status (refuel_request_status_id);