日期:2014-05-18  浏览次数:20602 次

毫秒级的SQL查询优化
在做的一个项目中,
所有的操作都是毫秒为计算单位的
要求尽快地完成一次SQL查询

这个查询是非常简单的,
就是用一个关键词(字符型)去查询一个表(有上万条记录)
返回的查询结果,
只要能够知道这个表里面有没有这条记录就可以了
(即知道真,假定就可以了,不需要使用返回的记录)

除了建立索引之外,还有没有其他的优化方法,如何做??谢谢

------解决方案--------------------
主键加索引,W条记录,ms级没有问题
------解决方案--------------------
1.关键词 字段用CHAR类型,字段宽度尽可能的小
2.关键字字段如果有条件的话建立聚集索引,否则建立一般索引,并且定时整理索引碎片
3.用EXISTS关键字

------解决方案--------------------
lz可以参考
影响查询的原因很多,常见如下几种:  
  1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)  
  2、I/O吞吐量小,形成了瓶颈效应。  
  3、没有创建计算列导致查询不优化。  
  4、内存不足  
  5、网络速度慢  
  6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)  
  7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)  
  8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。  
  9、返回了不必要的行和列  
  10、查询语句不好,没有优化

------解决方案--------------------
只要能够知道这个表里面有没有这条记录就可以了
(即知道真,假定就可以了,不需要使用返回的记录)
//暂时不将其他的优化方法,这一点用exists最合适不过了

如果系统中有事务,尽量把大事务转换为小事务
在硬件方面都Ok的前提下,注意是否存在死锁或者阻塞
------解决方案--------------------
exists的语句是这样的:
if exists(select 1 from table wehere Myfiled= "Avalue ")