聚合查询中如何使用索引?

克里斯·米德尔顿

给定一个查询

SELECT franchise, MAX(worth)
FROM figurines
GROUP BY franchise

什么样的索引可以加快查询速度,数据库将如何使用该索引?

如果需要更多详细信息,请假定该列franchise具有较低的基数并且worth具有很高的基数。

我个人使用的是mysql,但是我正在寻找对该算法的一般理解,而不是特定于供应商的实现细节。

艾米·B

方案1:无索引(读取整个表)

foreach(page in table.pages)
{
  foreach(row in page.rows)
  {
    Compare and accumulate franchise and worth from row
  }
}
-- Total IO = table.pages

方案2:仅专营权指数

foreach(page in index.pages)
{
  foreach(indexRow in page.rows)
  {
    tableRow = table.fetchRow(indexRow); // + 1 page of IO for each row
    Compare and accumulate franchise from indexRow and worth from tableRow
  }
}
-- Total IO = index.pages + table.rows
-- this is likely to be greater than Scenario 1...
--  so optimizer should prefer that plan instead.

方案3:按该顺序覆盖索引(特许经营权,价值)。

foreach(page in index.pages)
{
  foreach(row in page.rows)
  {
    Compare and accumulate franchise and worth from row
  }
}
-- Total IO = index.pages
-- Assuming that index is thinner than table, a win!

方案4:方案3中带有索引的特许经营者列表的不同查询

foreach(franchise in franchises)
{
  SELECT MAX(worth) FROM figurines WHERE franchise = franchise
}

...

foreach(franchise in franchises)
{
  search into the index looking for the last record with this franchise
  // this is usually less than 10 pages of IO in my experience.
}
-- Total IO = count of franchise * 10
-- super win!

方案4有所不同,因为它为搜索而不是扫描开具发票。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用通配符对查询中的存储桶聚合进行排序?

来自分类Dev

MongoDB:尽管仅使用索引字段,但不涵盖聚合查询

来自分类Dev

MongoDB:尽管仅使用索引字段,但不涵盖聚合查询

来自分类Dev

如何在 GROUP BY 查询中聚合非聚合值?

来自分类Dev

MongoDB如何使用聚合代替以下查询

来自分类Dev

使用Node JS在MongoDb中聚合查询

来自分类Dev

如何在单个查询中使用联接和聚合函数更新表中的多行

来自分类Dev

如何使用猫鼬中的聚合查询过滤$ match等于对象值

来自分类Dev

如何使用猫鼬中的聚合查询过滤$ match等于Isodate

来自分类Dev

如何使用include和regex正确查询Elasticsearch中的术语聚合值?

来自分类Dev

如何在单个查询中使用联接和聚合函数更新表中的多行

来自分类Dev

使用 Rails,如何在数据库中查询聚合数并按周分组?

来自分类常见问题

PostgreSQL-聚合查询中的聚合查询

来自分类Dev

PostgreSQL-聚合查询中的聚合查询

来自分类Dev

如何联合聚合查询?

来自分类Dev

如何从nodejs中的mongoose聚合查询中获取数据

来自分类Dev

如何在 Postgresql 中索引此查询?

来自分类Dev

如何使用gin索引查询postgres数组?

来自分类Dev

SQL:如何使用索引加速查询

来自分类Dev

SQL:如何使用索引加速查询

来自分类Dev

如何使用索引优化选择查询

来自分类Dev

如何查询使用索引的PostgreSQL表?

来自分类Dev

如何使查询力使用这样的索引?

来自分类Dev

防止在Postgres中对特定查询使用索引

来自分类Dev

查询中未使用 Couchbase 数组索引

来自分类Dev

如何在Django中仅检索聚合查询的整数?

来自分类Dev

Node.js:如何在查询聚合中返回对象?

来自分类Dev

如何仅在ElasticSearch查询中返回聚合统计信息?

来自分类Dev

如何在Spring中编写此Mongo聚合查询?

Related 相关文章

  1. 1

    如何使用通配符对查询中的存储桶聚合进行排序?

  2. 2

    MongoDB:尽管仅使用索引字段,但不涵盖聚合查询

  3. 3

    MongoDB:尽管仅使用索引字段,但不涵盖聚合查询

  4. 4

    如何在 GROUP BY 查询中聚合非聚合值?

  5. 5

    MongoDB如何使用聚合代替以下查询

  6. 6

    使用Node JS在MongoDb中聚合查询

  7. 7

    如何在单个查询中使用联接和聚合函数更新表中的多行

  8. 8

    如何使用猫鼬中的聚合查询过滤$ match等于对象值

  9. 9

    如何使用猫鼬中的聚合查询过滤$ match等于Isodate

  10. 10

    如何使用include和regex正确查询Elasticsearch中的术语聚合值?

  11. 11

    如何在单个查询中使用联接和聚合函数更新表中的多行

  12. 12

    使用 Rails,如何在数据库中查询聚合数并按周分组?

  13. 13

    PostgreSQL-聚合查询中的聚合查询

  14. 14

    PostgreSQL-聚合查询中的聚合查询

  15. 15

    如何联合聚合查询?

  16. 16

    如何从nodejs中的mongoose聚合查询中获取数据

  17. 17

    如何在 Postgresql 中索引此查询?

  18. 18

    如何使用gin索引查询postgres数组?

  19. 19

    SQL:如何使用索引加速查询

  20. 20

    SQL:如何使用索引加速查询

  21. 21

    如何使用索引优化选择查询

  22. 22

    如何查询使用索引的PostgreSQL表?

  23. 23

    如何使查询力使用这样的索引?

  24. 24

    防止在Postgres中对特定查询使用索引

  25. 25

    查询中未使用 Couchbase 数组索引

  26. 26

    如何在Django中仅检索聚合查询的整数?

  27. 27

    Node.js:如何在查询聚合中返回对象?

  28. 28

    如何仅在ElasticSearch查询中返回聚合统计信息?

  29. 29

    如何在Spring中编写此Mongo聚合查询?

热门标签

归档