【问题标题】:SQL Server 2008 R2 Create indexSQL Server 2008 R2 创建索引
【发布时间】:2012-01-11 19:53:55
【问题描述】:

现在我正在寻求您的帮助来创建这些索引。

现在这是我的表结构

这是我需要索引以获得最佳性能的查询。

select PageId 
    from tblPages 
    where UrlChecksumCode = @UrlChecksumCode 
        and PageUrl = @PageUrl

现在我对索引很不满意。我计划在执行查询时首先找到UrlChecksumCode 行,然后查找pageurl 列。如果您还向我解释为什么要制作这样的索引,我真的很感激。谢谢。

【问题讨论】:

  • 一个是 1000 nvarchar,另一个是 bigint。我想索引应该有很大的不同。
  • 不能有多个相同url的记录。
  • Andrew Barber 我想你真的不明白这个问题。
  • 更新:我搬到了新系统(32 位散列,包括页面 id 和页面 url)。 SQL server cpu 使用率从几乎 100% 下降到 1% :)

标签: sql-server indexing


【解决方案1】:

一种方式,因为你的 pageURL 是 long(nvarchar(1000),如果你不使用包含的列,索引只能是 900 字节,我创建了这个index with included columns

create index ix_IndexName on tblPages (UrlChecksumCode) INCLUDE(PageUrl)

create index ix_IndexName on tblPages (UrlChecksumCode) INCLUDE(PageUrl, PageID)

另见SQL Server covering indexes

为什么 URL 是 nvarchar 而不是 varchar...它们可以是 unicode 吗?如果不使其成为 varchar 并保存 1/2 的大小

【讨论】:

  • 这不是我真正想要的。索引应该在 urlchecksumcode 上。也许不包括 pageurl 索引?
  • 索引中列的顺序会先找urlchecksumcode,看我加到我的问题的那篇文章
  • 新的 url 数量会很多。这不会带来额外的压力吗?我想包括 PageId 更合乎逻辑。我也在读这篇文章。
  • 这似乎是我需要的查询:在 tblPages (UrlChecksumCode,PageUrl,PageId) 上创建非聚集索引 indexPageUrlHash 对吗?
  • 这与我的答案中的第二个相同,您需要使用包含的列,因为您超过 900 个字节
【解决方案2】:

创建非聚集索引

       create nonclustered index indexname on tablename(columnname)

删除索引

       Drop Index index name on tablename

查看数据库中的所有索引

       select * from sys.indexes

【讨论】:

    【解决方案3】:

    您可能想要一个超过 (UrlChecksumCode and PageUrl) 的索引,因为这就是它选择的对象。

    尽管在某些数据模式下,如果您只是索引 (UrlChecksumCode) 可能会获得更好的性能,因为 PageUrl 需要更大的文本索引

    【讨论】:

    • 是的,但我正在寻找如何制作索引。我已经意识到这一点。
    【解决方案4】:

    如果你想创建集群,你可以使用这个,

    CREATE CLUSTERED INDEX IX_IndexName ON tblPages (UrlChecksumCode) INCLUDE(PageUrl)
    

    以下查询检索在您的表上创建的索引。

    EXECUTE sp_helpindex tablename
    

    集群索引简介:-

    聚集索引定义了数据在表中的物理存储顺序。表数据只能以唯一方式排序,因此每个表只能有一个聚集索引。在 SQL Server 中,主键约束自动在该特定列上创建聚集索引。或者您可以创建自定义集群索引,删除由主键创建的默认集群索引。

    【讨论】:

      【解决方案5】:

      我认为即使我们可以使用聚集索引来进行快速搜索,例如 创建聚集索引 someName 上表名(列名1,列名2,......) 但我们只能为选项卡创建一个聚集索引

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多