易截截图软件、单文件、免安装、纯绿色、仅160KB

提高数据库SQL语句查询速度的几个方法(转)


提高数据库SQL语句查询速度的几个方法
1、程序中,
保证在实现功能的基础上,尽量减少对数据库的访问次数;
通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担;
能够分开的操作尽量分开处理,提高每次的响应速度;
在数据窗口使用SQL时,尽量把使用的索引放在选择的首列;
算法的结构尽量简单;
在查询时,不要过多地使用通配符如SELECT * from T1语句,要用到几列就选择几列如:SELECT COL1,COL2 from T1;
在可能的情况下尽量限制尽量结果集行数如:SELECT TOP 300 COL1,COL2,COL3 from T1,因为某些情况下用户是不需要那么多的数据的。
不要在应用中使用数据库游标,游标是非常有用的工具,但比使用常规的、面向集的SQL语句需要更大的开销;
按照特定顺序提取数据的查找。
2、避免使用不兼容的数据类型。例如float和int、char和varchar、binary和varbinary是不兼容的。
数据类型的不兼容可能使优化器无法执行一些本来可以进行的优化操作。例如:
SELECT name from employee WHERE salary > 60000
在这条语句中,如salary字段是money型的,则优化器很难对其进行优化,因为60000是个整型数。
我们应当在编程时将整型转化成为钱币型,而不要等到运行时转化。
3、尽量避免在WHERE子句中对字段进行函数或表达式操作,这将导致引擎放弃使用索引而进行全表扫描。如:
SELECT * from T1 WHERE F1/2=100
应改为:
SELECT * from T1 WHERE F1=100*2
SELECT * from RECORD WHERE SUBSTRING(CARD_NO,1,4)=’5378’
应改为:
SELECT * from RECORD WHERE CARD_NO LIKE ‘5378%’
SELECT member_number, first_name, last_name   from members
WHERE DATEDIFF(yy,datofbirth,GETDATE()) > 21
应改为:
SELECT member_number, first_name, last_name   from members
WHERE dateofbirth < DATEADD(yy,-21,GETDATE())
即:任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。
4、避免使用!=或<>、IS NULL或IS NOT NULL、IN ,NOT IN等这样的操作符,
因为这会使系统无法使用索引,而只能直接搜索表中的数据。例如:
SELECT id from employee WHERE id != 'B%'
优化器将无法通过索引来确定将要命中的行数,因此需要搜索该表的所有行。
5、尽量使用数字型字段,一部分开发人员和数据库管理人员喜欢把包含数值信息的字


相关文档:

三种SQL分页法

三种SQL分页法
   表中主键必须为标识列,[ID] int IDENTITY (1,1)
  1.分页方案一:(利用Not In和SELECT TOP分页)
语句形式:  
SELECT TOP 10 *
from TestTable
WHERE (ID NOT IN
          (SELECT TOP 20 id
     ......

sql server2005转库至sql server2000

1、先导出数据到ACCESS,再导到sql server2000,出现问题,字段类型被改变。
2、采用 生成sql server脚本 解决问题。
SQL Server 2005数据库文件转到SQL Server 2000的步骤
1. 生成for   2000版本的数据库脚本  
  2005   的manger   studio  
  --&nb ......

从【各大软件公司笔试压轴题】学习SQL语句

从博客园中看到一篇文章,介绍大软件公司面试时常常会出的两道SQL题(见附录)。
我觉得受益很多,在此之前,我一直觉得,SQL2008似乎提供了这方面的支持,但更低的版本,包括2005,非游标做不出来(水平够菜)。总结心得如下:
1、    强大的group by
1  select stdname,
2  isnull( ......

SQL SERVER2000 备份问题

         在SQL SERVER2000企业管理器下,SQL Server组里已经加如了 新建SQL Server 注册
比如:在可用的服务器(V)文本框中输入了:192.138.2.66然后点击 添加到服务器,当注册成功后
,当然192.138.2.66里面有 一个名为 kangaroo的数据库, 我现在的问题是:
 怎么把 ......

sql server 2008 创建用户

 
这两天用到了 sql server 2008 ,主要是建数据库,建表和创建用户。
 
在 “Windows 身份验证”   下,创建了数据库和 用户,然后用 SQL Server 身份验证  登录 ,却提示 错误 18452,
找了一下资料 改法 如下:
[无法连接到服务器 服务器:消息18452, 级别16,状态1 [Microsof ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号