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

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
T
Threatpost
Latest news
Latest news
N
News | PayPal Newsroom
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Help Net Security
Help Net Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
AI
AI
Simon Willison's Weblog
Simon Willison's Weblog
TaoSecurity Blog
TaoSecurity Blog
The Last Watchdog
The Last Watchdog
L
LINUX DO - 热门话题
Google DeepMind News
Google DeepMind News
T
Threat Research - Cisco Blogs
O
OpenAI News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
The Exploit Database - CXSecurity.com
NISL@THU
NISL@THU
Application and Cybersecurity Blog
Application and Cybersecurity Blog
S
Securelist
小众软件
小众软件
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Martin Fowler
Martin Fowler
S
SegmentFault 最新的问题
Cisco Talos Blog
Cisco Talos Blog
云风的 BLOG
云风的 BLOG
AWS News Blog
AWS News Blog
GbyAI
GbyAI
N
News and Events Feed by Topic
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
美团技术团队
Engineering at Meta
Engineering at Meta
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
S
Schneier on Security
博客园 - 聂微东
V2EX - 技术
V2EX - 技术
T
Troy Hunt's Blog
SecWiki News
SecWiki News
S
Secure Thoughts
B
Blog RSS Feed
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
腾讯CDC
H
Heimdal Security Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
www.infosecurity-magazine.com
www.infosecurity-magazine.com
P
Privacy International News Feed

博客园 - ipusr

SQL 压缩日志 javascript对float数值进行运算的误差解決 net dll 破解 Balsamiq Mockups 小窍门 Web键盘操作键值表 - ipusr - 博客园 .NET 项目中用到的广告效果 如何防止空链接 # 返回到页面 - ipusr PowerDesigner使用注意事项 sql表数据生成insert HBKrnl木马病毒杀毒办法(HBKernel.sys) (转)jQuery 基础 - ipusr - 博客园 使用Javascript操作DOM的一些方法--元素的访问/复制等 - ipusr - 博客园 JS获取所有对象 javascript - ipusr - 博客园 用户中心 - 博客园 数字验证 控件 - ipusr - 博客园 Net读取Execl问题回顾 - ipusr - 博客园 SET NOCOUNT RowCount 説明 sysloader 木马清除方法
SQL性能优化总结 - ipusr - 博客园
ipusr · 2011-01-21 · via 博客园 - ipusr

第一:SQl基本规范

1、尽量避免使用游标(效率比较差,特别是数据量大的情况,可以采用条件过滤或者数据到临时表,再做操作!)

2、需要注意Where条件顺序(先根据索引、范围大小确定前后顺序;字段顺序尽量与索引顺序一致;范围由大到小)

3、尽量不要再where条件中  = 号的后面 中采用函数、算术等运算(可能导致系统无法正常使用索引)

4、使用exists代替in、select count(1)判断记录是否存在

5、尽量使用 “ >= ”,不要使用 " > "

6、进行Insert、update的时候,应该防止冲突(特别是数据量大的时候,锁会升级)

7、like使用注意(尽量不采用 “%1%” 之类的方式处理,多采用 “1% ”、“%1”)

8、避免连接字段查询(如  a.first+'|'+b.name = XXXX,应该采用 a.first='X' and b.name ='XXX')

9、字段有Null的情况,不能对其建立索引

第二  索引注意点

1、根据实际情况建立,即使数据量很大的表,索引不能超过6个

2、尽量使用索引的字段作为查询条件,尤其是聚簇索引,必要时可以通过index index_name来强制指定索引

3、数据量大的表,尽量建立索引

4、在使用索引字段作为条件时,如果该索引是联合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不被使用

第三  临时表注意点

1、尽量不使用 distinct \order by \ group by \having \ join \ cumpute 等,因为这些会增加临时表的负担

2、创建临时表时,如果插入的数据量大,可以采用 select into 替换 create table,避免产生log,提高速度;如果插入数据量不大,可以采用 create table  然后再 insert

3、如果临时表的数据量大,也需要建立索引(最好包含在一个存储过程中)

4、临时表要及时删除;(先 truncate table  ,在 drop table ,减少系统表被锁定的时间)

第四  其他

1、不要在一句话里多次的使用相同的函数,浪费资源,将结果放在变量里再调用更快

2、Select COUNT(*)的效率教低,尽量变通他的写法,而EXISTS快.同时请注意区别: select count(Field of null) from Table 和 select count(Field of NOT null) from Table 的返回值是不同的

3、UNion和UNion all 的区别,UNION all更好

4、注意使用DISTINCT,在没有必要时不要用,它同UNION一样会使查询变慢。重复的记录在查询里是没有问题的
5、查询时不要返回不需要的行、列
6、用select top 100 / 10 Percent 来限制用户返回的行数或者SET ROWCOUNT来限制操作的行
7、一般不要用如下的字句: "IS NULL", "<>", "!=", "!>", "!<", "NOT", "NOT EXISTS", "NOT IN", "NOT LIKE", and "LIKE '%500'",因为他们不走索引全是表扫描。也不要在Where字句中的列名加函数,如Convert,substring等,如果必须用函数的时候,创建计算列再创建索引来替代.还可以变通写法:Where SUBSTRING(firstname,1,1) = 'm'改为Where firstname like 'm%'(索引扫描),一定要将函数和列名分开。并且索引不能建得太多和太大。NOT IN会多次扫描表,使用EXISTS、NOT EXISTS ,IN , LEFT OUTER JOIN 来替代,特别是左连接,而Exists比IN更快,最慢的是NOT操作.如果列的值含有空,以前它的索引不起作用,现在2000的优化器能够处理了。相同的是IS NULL,"NOT", "NOT EXISTS", "NOT IN"能优化她,而"<>"等还是不能优化,用不到索引。

8、一次更新多条记录比分多次更新每次一条快,就是说批处理好
、、、、、、、