栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何优化此SQL查询(使用索引)?[关闭]

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何优化此SQL查询(使用索引)?[关闭]

简介: 这里有很多要讨论的内容,由于SQL的复杂性,任何人都不可能完全帮助您进行查询-
这与查询的内容,表的大小以及表的大小有关。正在使用的数据库系统是。如果您不知道什么是索引或如何使用索引,请参见此处:数据库索引如何工作?。

注意事项:
同样,如果您的系统具有DBA,请在索引任何内容之前与他们联系,尤其是在实时系统上。如果您对他们友善,他们甚至可以提供帮助。如果该系统被其他许多人使用,则在更改诸如索引之类的内容之前要小心。如果数据用于多种查询类型,请确保没有在它们上产生大量冲突或重叠的索引。

句法。 标准(SQL92)使用:

CREATE INDEX [index name] ON [table name] ( [column name])
。该语法在几乎所有系统上都应适用。如果表上只需要一个索引,并且还没有聚集索引,则可以使用:
CREATE [Unique] ClusteredINDEX [index name] ON [table name] ( [column name])
-如果不能有多个具有相同值的项目,则该索引应该是唯一的。如果您无法使用它,请参阅这篇文章以了解更多详细信息:如何为数据库列建立索引。

应该为哪些表建立索引?
用于查询的任何表(尤其是数据是静态的或仅获取新值的表)都是不错的选择。如果该表在您的查询中,并且具有join语句,则您可能希望在要连接的列上有一个索引。

应该为哪些列编制索引? 有很多关于选择最佳索引以及如何正确索引数据库的书籍。如果您不想深入研究索引,建立索引的基本经验法则是:按以下顺序进行索引:

  1. 连接谓词(
    on Table1.columnA=Table2.ColumnA and Table1.columnB=Table2.ColumnQ
  2. 过滤后的列(
    where Table1.columnN=鈥橞ob鈥� and Table1.columnS<20
  3. 排序依据/分组依据/等。(如果可能,用于排序/分组的任何列都应在索引中。)

还:

  • 使用有意义的数据类型-如果是整数或日期,则不将任何内容存储为varchar。(列宽很重要。如果可能,请使用最小的数据类型。)
  • 确保您的联接具有相同的数据类型-从int到int,从varchar到varchar,依此类推。
  • 如果可能,请在每个表的每个连接谓词上使用唯一的非空索引。
  • 确保任何可能的列都不为空。(如果它们不能包含空值,则可以使用以下语法。
     Alter table Table1 alter column columnN int not null

完成所有这些操作,您就可以顺利进行。 但是,如果您定期需要这些东西,请学习它!
买书,在线阅读,查找信息。那里有很多信息,这是一个很深的话题,但是如果您知道自己在做什么,则可以使查询更好。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/377730.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号