Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/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
Postgresql 为什么不是';我的hasura查询是否使用索引扫描?_Postgresql_Indexing_Graphql_Query Optimization_Hasura - Fatal编程技术网

Postgresql 为什么不是';我的hasura查询是否使用索引扫描?

Postgresql 为什么不是';我的hasura查询是否使用索引扫描?,postgresql,indexing,graphql,query-optimization,hasura,Postgresql,Indexing,Graphql,Query Optimization,Hasura,以下是Hasura关于如何优化我的查询的指南: 但是我的查询仍然在执行顺序扫描而不是索引扫描,我不明白为什么 我使用不可为空的标量变量,并且创建了索引,但问题仍然存在 索引: 在“店铺”(店铺来源)上创建店铺索引 查询: query get_storefront_data ($shop_origin: String!) { shop_by_pk(shop_origin: $shop_origin) { app_subscription_type cu

以下是Hasura关于如何优化我的查询的指南:

但是我的查询仍然在执行顺序扫描而不是索引扫描,我不明白为什么

我使用不可为空的标量变量,并且创建了索引,但问题仍然存在

索引:

在“店铺”(店铺来源)上创建店铺索引

查询:

query get_storefront_data ($shop_origin: String!) {
      shop_by_pk(shop_origin: $shop_origin) {
        app_subscription_type
        currency_code
        usage_count
      }      
    }
变量:

{
  "shop_origin": "test.myshopify.com"
}
执行计划(由Hasura控制台中的“分析”按钮生成):


我做错了什么?如何让查询执行索引扫描而不是顺序扫描?

对于小型表,顺序扫描是最有效的访问方法。使用实际数据量执行有意义的性能测试。

如果表很小,数据库引擎本身将忽略索引。值得注意的是,这是一个数据库引擎问题,与Hasura无关。编辑:这并不是完全正确的,Postgres可以决定不使用索引是否更有效,并且它可以发生在大型和小型表中。
Aggregate  (cost=1.05..1.07 rows=1 width=32)
  ->  Seq Scan on shop  (cost=0.00..1.04 rows=1 width=16)
        Filter: (shop_origin = 'test.myshopify.com'::text)
  SubPlan 1
    ->  Result  (cost=0.00..0.01 rows=1 width=32)