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

SQL SERVER 查询语句优化(转)

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、   尽量使用数字型字段,一部分开发人员和数据库管理人员喜欢把包含数值信息


相关文档:

在PHP中全面阻止SQL注入式攻击之三

一、 建立一个安全抽象层
  我们并不建议你手工地把前面介绍的技术应用于每一个用户输入的实例中,而是强烈推荐你为此创建一个抽象层。一个简单的抽象是把你的校验方案加入到一个函数中,并且针对用户输入的每一项调用这个函数。当然,我们还可以创建一种更复杂的更高一级的抽象-把一个安全的查询封装到一个类中,从而应 ......

Sql Server根据记录集批量更新数据库

update   t1   set   t1.value=t2.value   from   t2   where   t1.id=t2.id
 
update jbsite_class  set topicnum = count
from (select t2.classid,count from (
select distinct classid,count(*) as count
from jbsite_product ......

批处理bat执行sql脚本

set r=%time%
echo %r%开始导入 >>e:\c#\test.txt
osql -S (local) -U sa -P -d colorring -i e:\c#\11.sql >>d:\c#\test.txt
echo %r%导入完成 >>e:\c#\test.txt
其中11.sql中为
bulk insert  colorring..test from 'e:\c#\11.txt'
WITH (
FIELDTERMINATOR = ',',
ROWTERMINATOR ='\n' ......

SQL Server——删除数据库日志

一、清空日志
DUMP   TRANSACTION   库名   WITH  
NO_LOG    
二、收缩数据库文件(如果不压缩,数据库的文件不会减小
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
  
--选择日志文件--在收缩方式里选择收缩至XXM,这 ......

超级有用的SQL语句(分析SQL SERVER 数据库表结构专用)

超级有用的SQL语句 (用于SQL SERVER 服务器)
超级有用的SQL语句 ,执行后返回的列分别是:表名、列名、列类型、列长度、列描述、是否主键,语句如下:
(分析SQL SERVER 数据库表结构专用)
Select Sysobjects.Name As 表名,
       Syscolumns.Name As 列名,
     ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号