SQL语句的优化
SQL语句级别的优化是我们实际工作中接触最多的,几乎所有的数据库应用说到底都是SQL语句的具体执行,因此如何对SQL脚本本身进行优化,提高执行效率就显得尤为重要。以下是一些通用的设计原则。
(1)使用select语句查询时,尽量不要使用select * 语句,而是应该指明具体要查询的字段,提取的字段数量越少,查询的速度越快。
(2)使用Order by 语句排序时,最好按照聚簇索引的字段排序,这样会大大提高排序的速度。
(3)尽量不要使用or关键字,或是 in(),否则会引起全表扫描,大大减低数据的检索速度。
比如数据量较大时(几十万记录),不要使用如下的SQL语句:
Select count(*) from student where id in('0','1')
Select count (*) from student where id='0' or id='1'
应该拆分成如下两条SQL语句:
select count(*) from student where id ='0'
select count (*)from student where id='1'
(4)对笛卡尔积,游标,循环要谨慎使用。
(5)存储过程,函数,包,触发器等尽量不要超过1000行,之间调用不要复杂。
(6)检查嵌套,递归,子查询的深度,最好不要超过3层。
(7)order by ,group by ,distinct 这些语句运行时相对来说会占用较大的内存,使用时需要加以注意。
(8)尽量少用NOt,包括NOT in 和not exist
(9)between 1 and 10 要比 in (1,10)字段执行效率高。
(10)当where语句后有多个查询条件时,应该将数据量大的表的查询过滤条件放在前面。
(11)like 语句是很耗时的,如果条件允许的话,可以使用功能相同的语句代替,比如
select name from student where ID like '100???'这条语句,会对全表进行顺序扫描;可以改为 select name from student where ID >100000,这样在执行查询时就会利用索引来查询,显然会大大提高速度。
(13)尽量不要再SQL语句中进行对列的操作,包括数据库函数,计算表达式等,否则会导致全表扫描,要尽可能将操作移至等号右边。
&n
相关文档:
机器情况
p4: 2.4
内存: 1 G
os: windows 2003
数据库: ms sql server 2000
目的: 查询性能测试,比较两种查询的性能
SQL查询效率 step by step
-- setp 1.
-- 建表
create table t_userinfo
(
userid int identity(1,1) primary key nonclustered,
nick varchar(50) not null default '',
classid int not nul ......
数据库快照是MSSQL2005的新功能,仅在 Microsoft SQL Server 2005 Enterprise Edition 中可用。而且SQL Server Management Studio 不支持创建数据库快照,创建快照的唯一方式是使用 Transact-SQL。
数据库快照是数据库(称为“源数据库”)的只读静态视图。在创建时,每个数据库快照在事务上都与源数据库一致 ......
如:SET @sql=N'SELECT * from stu'
其中“N”的作用是表示后面的编码格式为unicode编码
DECLARE @rst INT,@sql NVARCHAR(4000)
SET @sql=N'SELECT * from tb '
EXEC sp_executesql @sql,N'@rst INT OUTPUT',@rst OUTPUT
SELECT @rst
......
使用LINQ to SQL建模Northwind数据库
在这之前一起学过LINQ to SQL设计器的使用,下面就使用如下的数据模型:
当使用LINQ to
SQL设计器设计以上定义的五个类(Product,Category,Customer,Order和OrderDetail)的时候,每个类中的属性
都映射了相应数据库中表的列,每个类的实例则代表了数据库表中的一条记录。另外, ......
1、简单查询
求出在1988年以前被雇佣的销售人员
SELECT NAME
from SALESREPS
WHERE HIRE_DATE<'01-JAN-88'
列出其销售量低于销售目标的80%的销售点
SELECT CITY,SALES,TAGET
from SALESPEPS
WHERE SALES<0.8*TAGET ......