毫秒级的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 ")