【问题标题】:Which Index Should I Create when using multiple OrderBy使用多个 OrderBy 时应该创建哪个索引
【发布时间】:2019-01-10 04:49:07
【问题描述】:

我正在使用 Entity Framework Core 并读取一些包含数千条记录的数据。每条记录都有很多列,其中我使用 3 个(a、b 和 c)并在做:

OrderBy(a).ThenBy(b).ThenBy(c);

然后我正在应用排序和分页。

为了提高查询速度,我应该创建哪种索引(如果有)?修改表格不如阅读频繁。我应该用 3 列创建一个索引吗?按什么顺序?还是每列一个?

【问题讨论】:

    标签: azure-sql-database database-indexes database-optimization ef-core-2.2


    【解决方案1】:

    如果您的查询使用 WHERE 子句也如下所示...

    SELECT ColumnA, 
    FROM Table
    WHERE ColumnA = 0
    ORDER BY Column1, Column2, Column3
    

    然后按以下顺序 ColumnA、Column1、Column2、Column3 创建索引。

    如果您使用 OFFSET FETCH NEXT ROWS ONLY 进行分页,该索引仍然有效

    SELECT ColumnA, 
    FROM Table
    WHERE ColumnA = 0
    ORDER BY Column1, Column2, Column3
    OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY
    

    如果您的查询只有 ORDER BY 子句而没有 WHERE 子句,则按以下顺序 Column1、Column2、Column3 创建索引。

    【讨论】:

      猜你喜欢
      • 2011-02-22
      • 2015-05-25
      • 1970-01-01
      • 2015-02-10
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      • 2010-11-18
      • 2020-08-25
      相关资源
      最近更新 更多