于是,我找遍各大网络:
1. 该语句查询,在我工作的电脑上是1.6秒钟
2.在我家里的机器上不到1秒,具体多少毫秒,我不知道
3.我真的想知道,这条语句还能怎么优化?(索引已经加了,fID为主键,但是是varchar(100)类型的)
求各路大神搭救:就想知道, select fID from tabKit 这条语句该怎么优化? 先谢谢谢谢,跪求答案,请各路英雄广开言路,帮忙打听下也行啊
10 个解决方案
#1
换服务器呗,多加些硬件,千万别心疼钱
#2
估计在很难优化了,除过在硬件上投入。。
#3
把你的语句的执行计划贴出来看看。
要想优化,首先得知道这个语句慢在哪儿?
要想优化,首先得知道这个语句慢在哪儿?
#4
你就贴了这么一个简单的语句,没有任何具体的信息,包括表结构等信息,没办法帮你优化。
#5
你的索引做得太大。我基本上不建议在varchar(100)类型的列上建索引。
以你的例子,可以使用“加温”的方法实现。首先要保证给SQL Server分配足够的内存,然后你运行一次select fID from tabKit (俗称“加温”,即把磁盘中的页面都读取到内存缓冲),然后你再找你老板过来再运行一次select fID from tabKit 就发现速度快了很多。
以你的例子,可以使用“加温”的方法实现。首先要保证给SQL Server分配足够的内存,然后你运行一次select fID from tabKit (俗称“加温”,即把磁盘中的页面都读取到内存缓冲),然后你再找你老板过来再运行一次select fID from tabKit 就发现速度快了很多。
#6
晕 77000行,普通的程序界面肯定显示不下,web页面更是显示不下,你做个分页不就是了。
#7
select fID from tabKit ---没有where条件,并且fiD是主键,你还想要再快一些。。。
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秒变到更短,个人觉得,没意义。。。
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秒变到更短,个人觉得,没意义。。。
#8
具体问题具体分析了,单单这句很难找到慢在哪了
打开查询分析,按Ctrl+ L将执行计划贴出来看看
打开查询分析,按Ctrl+ L将执行计划贴出来看看
#9
大哥们,人家都说了就一句话:select fID from tabKit ; 而且fiD是主键,执行计划有什么好看的,肯定是clustered scan啊。。。
单个的这句话,个人觉得没什么优化的意义。
单个的这句话,个人觉得没什么优化的意义。
#10
你就自己说就不查你把那些数据下下来
你要网速达不到好几百K
1秒种下载都不够
瓶颈在网络了
你要网速达不到好几百K
1秒种下载都不够
瓶颈在网络了
#1
换服务器呗,多加些硬件,千万别心疼钱
#2
估计在很难优化了,除过在硬件上投入。。
#3
把你的语句的执行计划贴出来看看。
要想优化,首先得知道这个语句慢在哪儿?
要想优化,首先得知道这个语句慢在哪儿?
#4
你就贴了这么一个简单的语句,没有任何具体的信息,包括表结构等信息,没办法帮你优化。
#5
你的索引做得太大。我基本上不建议在varchar(100)类型的列上建索引。
以你的例子,可以使用“加温”的方法实现。首先要保证给SQL Server分配足够的内存,然后你运行一次select fID from tabKit (俗称“加温”,即把磁盘中的页面都读取到内存缓冲),然后你再找你老板过来再运行一次select fID from tabKit 就发现速度快了很多。
以你的例子,可以使用“加温”的方法实现。首先要保证给SQL Server分配足够的内存,然后你运行一次select fID from tabKit (俗称“加温”,即把磁盘中的页面都读取到内存缓冲),然后你再找你老板过来再运行一次select fID from tabKit 就发现速度快了很多。
#6
晕 77000行,普通的程序界面肯定显示不下,web页面更是显示不下,你做个分页不就是了。
#7
select fID from tabKit ---没有where条件,并且fiD是主键,你还想要再快一些。。。
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秒变到更短,个人觉得,没意义。。。
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秒变到更短,个人觉得,没意义。。。
#8
具体问题具体分析了,单单这句很难找到慢在哪了
打开查询分析,按Ctrl+ L将执行计划贴出来看看
打开查询分析,按Ctrl+ L将执行计划贴出来看看
#9
大哥们,人家都说了就一句话:select fID from tabKit ; 而且fiD是主键,执行计划有什么好看的,肯定是clustered scan啊。。。
单个的这句话,个人觉得没什么优化的意义。
单个的这句话,个人觉得没什么优化的意义。
#10
你就自己说就不查你把那些数据下下来
你要网速达不到好几百K
1秒种下载都不够
瓶颈在网络了
你要网速达不到好几百K
1秒种下载都不够
瓶颈在网络了