今天老板在我电脑上,打开SQL Server查询器,输入 select fID from tabKit , 查询结果是77000行,用时显示的1秒钟。他让我必须优化在1秒钟之内。于是,我找遍各大网络:
1. 该语句查询,在我工作的电脑上是1.6秒钟
2.在我家里的机器上不到1秒,具体多少毫秒,我不知道
3.我真的想知道,这条语句还能怎么优化?(索引已经加了,fID为主键,但是是varchar(100)类型的)求各路大神搭救:就想知道, select fID from tabKit 这条语句该怎么优化? 先谢谢谢谢,跪求答案,请各路英雄广开言路,帮忙打听下也行啊
1. 该语句查询,在我工作的电脑上是1.6秒钟
2.在我家里的机器上不到1秒,具体多少毫秒,我不知道
3.我真的想知道,这条语句还能怎么优化?(索引已经加了,fID为主键,但是是varchar(100)类型的)求各路大神搭救:就想知道, select fID from tabKit 这条语句该怎么优化? 先谢谢谢谢,跪求答案,请各路英雄广开言路,帮忙打听下也行啊
以你的例子,可以使用“加温”的方法实现。首先要保证给SQL Server分配足够的内存,然后你运行一次select fID from tabKit (俗称“加温”,即把磁盘中的页面都读取到内存缓冲),然后你再找你老板过来再运行一次select fID from tabKit 就发现速度快了很多。
1,如果fid仅仅是主键,而不是聚集索引的主键,那就改成聚集索引的主键;
2,fiD从varchar(100)变为int类型,这个估计不行吧?那么就把varchar(100)变的更短一些吧,比如varchar(50);
3,换更加NB的服务器;
4,按照你的描述,应该是链接到服务器上执行的那句话吧,1秒应该还含有网络传输时间,因为SQL Server的网络传输用的是TCP/IP协议,所以呢,网络要整下。
5,想看SQL Server在执行的时候实际话了多少时间,可以set statistics time on/off 这样看;
但是呢,综上所述,我想说的是:你仅仅是想把那条语句从1秒变到更短,个人觉得,没意义
打开查询分析,按Ctrl+ L将执行计划贴出来看看
单个的这句话,个人觉得没什么优化的意义。