AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-163

Andrew Barber's questions

Martin Hope
Andrew Barber
Asked: 2011-12-18 14:04:03 +0800 CST

位字段如何为索引排序?

  • 4

我正在构建一个复合索引,但我不能 100% 确定以哪种方式包含作为bit表的一部分的字段。该索引将用于类似于论坛主题列表的内容,我希望单个索引为ForumId(int),IsSticky(bit),然后是DatePosted (desc)(datetime2(0))

但我想确保IsSticky正确处理位域;我是否像trueis1或那样索引它-1?如果是 1,我会索引 IsSticky 降序;如果为-1,我会将其索引为升序。

另外,我要的是 SQL 2008,但我很想知道它在 2005 年是否有所不同。

sql-server sql-server-2008
  • 1 个回答
  • 3765 Views
Martin Hope
Andrew Barber
Asked: 2011-01-05 10:48:09 +0800 CST

我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 22

我已经有点知道这个问题的答案了,但我总觉得在这个话题上我还需要了解更多。

我的基本理解是,一般而言,仅包含您可能在任何给定时间查询/排序的所有字段的单个索引不太可能有用,但我已经看到了这种类型的东西。比如,有人想,“好吧,如果我们只是把所有这些东西放在一个索引中,数据库就可以用它来找到它需要的东西”,而没有看到一些正在运行的实际查询的执行计划。

想象一下这样的表:

id int pk/uid
name varchar(50)
customerId int (foreign key)
dateCreated datetime

我可能会看到一个包含name,customerId和dateCreated字段的索引。

但我的理解是,这样的索引不会在查询中使用,例如:

SELECT [id], [name], [customerId], [dateCreated]
   FROM Representatives WHERE customerId=1 
   ORDER BY dateCreated

对于这样的查询,在我看来,一个更好的主意是包含customerId和dateCreated字段的索引,customerId字段为“第一”。这将创建一个索引,该索引将以这样的方式组织数据,以便该查询可以快速找到它需要的内容 - 按照它需要的顺序。

我看到的另一件事,也许和第一件事一样频繁,是每个字段上的单独索引。name因此,在customerId和dateCreated字段上各有一个。

与第一个示例不同,这种安排有时在我看来至少部分有用。查询的执行计划可能显示至少它使用 上的索引customerId来选择记录,但它没有使用带有dateCreated字段的索引来对它们进行排序。


我知道这是一个广泛的问题,因为对任何特定表集的任何特定查询的具体答案通常是查看执行计划说明它将做什么,否则将表和查询的细节纳入帐户。另外,我知道这取决于查询可能运行的频率,而不是为其维护特定索引的开销。

但我想我要问的是作为索引的一般“起点”,为特定的、频繁提取的查询和 WHERE 或 ORDER BY 子句中的字段设置特定索引的想法是否有意义?

sql-server index
  • 2 个回答
  • 2689 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve