惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
Lohrmann on Cybersecurity
S
Secure Thoughts
I
Intezer
Forbes - Security
Forbes - Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
H
Help Net Security
IT之家
IT之家
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
宝玉的分享
宝玉的分享
S
Securelist
T
The Exploit Database - CXSecurity.com
博客园 - 叶小钗
Security Latest
Security Latest
The Cloudflare Blog
Jina AI
Jina AI
T
Tenable Blog
J
Java Code Geeks
G
GRAHAM CLULEY
C
CERT Recently Published Vulnerability Notes
SecWiki News
SecWiki News
AI
AI
博客园 - 聂微东
S
Schneier on Security
博客园_首页
爱范儿
爱范儿
有赞技术团队
有赞技术团队
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - 【当耐特】
T
Threatpost
Security Archives - TechRepublic
Security Archives - TechRepublic
Help Net Security
Help Net Security
酷 壳 – CoolShell
酷 壳 – CoolShell
Recent Announcements
Recent Announcements
W
WeLiveSecurity
M
MIT News - Artificial intelligence
H
Hackread – Cybersecurity News, Data Breaches, AI and More
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
Last Week in AI
Last Week in AI
T
Threat Research - Cisco Blogs
S
Security Affairs
T
Tor Project blog
T
Tailwind CSS Blog
N
News | PayPal Newsroom
C
CXSECURITY Database RSS Feed - CXSecurity.com
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
The Register - Security
The Register - Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security

博客园 - Dragon4

[转]PHP权重算法-用于游戏根据权限来随机物品 IIS7中如何配置Url重写 优化出来的bug:慎用static 如何拯救你,我的数据-单个mdf文件恢复数据库小记 程序员八卦:十年前天大的秘密-相约1998 Blog搬家到此,文章导入完毕,发帖庆祝。 [导入]中文版IE7for XP SP2下载地址 [导入]VS2008中文版TS版下载地址 [导入]Flex builder3 Crack 下载地址 [导入]各浏览器CSS hack [导入]VS2005 WInform程序如何调用js [导入]HttpWebResponse与WebResponse的区别 [导入]WinForm程序如何等待多个线程执行完后提示用户? [导入]Vistual studio2008RTM版本发布,附正版序列号 [导入]Request.ServerVariables参考 [导入]APS.NET获取用户端真实IP [导入]透过LINQSQO看LINQ内部机理 [导入]奇怪的数据插入异常:传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。 [导入]Flex应用启动背后的故事
数据库学习-索引设计准则
Dragon4 · 2009-03-18 · via 博客园 - Dragon4

  设计索引时需要遵循的准则包括:数据库准则、查询准则、列准则。以下详细列出了各个准则详细说明。其中1-3属于数据库准则;2-8属于查询准则;9-15属于列准则。  

 1. 一个表如果建有大量索引会影响INSERT、UPDATE和DELETE语句的性能,因为在表中的数据更改时,所有索引都须进行适当的调整。 避免对经常更新的表进行过多的索引,并且索引应保持较窄,就是说,列要尽可能少。   


 2. 使用多个索引可以提高更新少而数据量大的查询的性能。大量索引可以提高不修改数据的查询(例如SELECT语句)的性能,因为查询优化器有更多的索引可供选择,从而可以确定最快的访问方法。  


 

3. 对小表进行索引可能不会产生优化效果,因为查询优化器在遍历用于搜索数据的索引时,花费的时间可能比执行简单的表扫描还长。因此,小表的索引可能从来不用,但仍必须在表中的数据更改时进行维护。  


 4. 视图包含聚合、表联接或聚合和联接的组合时,视图的索引可以显著地提升性能。若要使查询优化器使用视图,并不一定非要在查询中显式引用该视图。


 

5. 为经常用于查询中的谓词和联接条件的所有列创建非聚集索引。避免添加不必要的列。添加太多索引列可能对磁盘空间和索引维护性能产生负面影响。 


 

6. 涵盖索引可以提高查询性能,因为符合查询要求的全部数据都存在于索引本身中。也就是说,只需要索引页,而不需要表的数据页或聚集索引来检索所需数据,因此,减少了总体磁盘I/O。例如,对某一表(其中对列a、列b和列c创建了组合索引)的列a和列b的查询,仅仅从该索引本身就可以检索指定数据。 


 

7. 将批量insert、update的操作写入单个语句内,而不要使用多个SQL语句操作相同的行。仅使用一个语句,就可以利用优化的索引维护。 


 

8. 评估查询类型以及如何在查询中使用列。例如,在完全匹配查询类型中使用的列就适合用于非聚集索引或聚集索引。 


 

9. 对于聚集索引,请保持较短的索引键长度。另外,对唯一列或非空列创建聚集索引可以使聚集索引获益。 


 

10. 不能将ntext、text、image、varchar(max)、nvarchar(max) 和varbinary(max) 数据类型的列指定为索引键列。不过,varchar(max)、nvarchar(max)、varbinary(max) 和xml数据类型的列可以作为非键索引列参与非聚集索引。 


 

11. xml数据类型的列只能在XML索引中用作键列。 


 

12. 检查列的唯一性。在同一个列组合的唯一索引而不是非唯一索引提供了有关使索引更有用的查询优化器的附加信息。 


 

13. 在列中检查数据分布。通常情况下,为包含很少唯一值的列创建索引或在这样的列上执行联接将导致长时间运行的查询。这是数据和查询的基本问题,通常不识别这种情况就无法解决这类问题。例如,如果物理电话簿按姓的字母顺序排序,而城市里所有人的姓都是Smith或Jones,则无法快速找到某个人。 


 

14. 如果索引包含多个列,则应考虑列的顺序。用于等于 (=)、大于 (>)、小于 (<) 或BETWEEN搜索条件的WHERE子句或者参与联接的列应该放在最前面。其他列应该基于其非重复级别进行排序,就是说,从最不重复的列到最重复的列。
例如,如果将索引定义为LastName、FirstName,则该索引在搜索条件为WHERE LastName = ‘Smith’ 或WHERE LastName = Smith AND FirstName LIKE ‘J%’ 时将很有用。不过,查询优化器不会将此索引用于基于FirstName (WHERE FirstName = ‘Jane’) 而搜索的查询。  


 15. 考虑对计算列进行索引。