表 a ( psseno decimal(16,0),name char(4),id char(18))
其中 psseno 为主健,
id为索引
表a有20多万条数据,查询语句是:select psseno from id='某个值'
请问一下,如何提高查询速度
38 个解决方案
#1
id为索引
-->
id为聚集索引
-->
id为聚集索引
#2
这么简单的语句的速度应该提高空间不大了
如果速度还是慢就该考虑升级硬件了
如果速度还是慢就该考虑升级硬件了
#3
如果大多查询都是id='某个值',就以ID为索引
#4
这样一定不慢,该做的都做了,还是简单查询,再要改只能改表结构了id char(18)改为bigint
#5
我也觉得这个语句简单,应该没问题。
如果有问题,多半是系统、硬件等问题。
如果有问题,多半是系统、硬件等问题。
#6
使用分页显示
#7
把id设置为聚集索引。
一个表只能有一个聚集索引。
创建主键时,默认在主键字段上创建聚集索引,可以手工调整,把其他字段设置为聚集索引。
一个表只能有一个聚集索引。
创建主键时,默认在主键字段上创建聚集索引,可以手工调整,把其他字段设置为聚集索引。
#8
我看在改效果也不会太明显了。
#9
强烈建议更换硬件!
select psseno,id from a where id= '某个值 ' order by psseno desc
这么精短的代码还慢的话就没法了!
select psseno,id from a where id= '某个值 ' order by psseno desc
这么精短的代码还慢的话就没法了!
#10
同意
#11
加索引.
提升硬件.
提升硬件.
#12
这种简单查询加20万的数据,直接在ID上建uncluster索引,保证1秒种内返回结果 ---- 如果你的SERVER不是386
#13
select psseno from id= '某个值 '
psseno 为主健(聚集索引), id为索引
这已经是最优化的结果,将id改为聚集索引反而更慢。
psseno 为主健(聚集索引), id为索引
这已经是最优化的结果,将id改为聚集索引反而更慢。
#14
好像有一年了阿,不知道硬件又没有升级阿?
#15
根据你的查询条件,并不是十分复杂的查询,所以我想除了提高机器性能,没有更好的提高查询速度的方法了或者是很有限。
#16
同意
#17
psseno,id 联合索引
#18
这个不见得,如果全表的ID都是一个值,哪么这条语句返回的就是全表,如果表够宽的话,想想20万记录应该快不到哪去。
所以:
1、从例子应用来看,建立聚集索引应该对大数据量(指结果集比较大,特别是宽表)应该会由较为明显的效果。
2、应该分析业务数据了,如果结果集只是很少的记录,则没有优化的空间了,如果结果集很大,就应该考虑减少结果了,要么减少返回的记录数,要么减少返回的字段。
#19
到位
#20
恩,支持,经典
#21
把数据整少点 把硬件整牛X点 。。。
#22
想提高查询速率在SQL方面基本就是作索引方面的工作了..
然后你要提高速率还要想到的是每次WEB服务器和SQL服务器之间的数据传输量的问题,这里如果数据量很大可以做存储过程分页,保证每次来回交互数据量在300条之内..
再者就是考虑SQL服务器本身的性能问题,如果是这点的话那么你就只能通知你们BOSS把服务器硬件升级下了..
然后你要提高速率还要想到的是每次WEB服务器和SQL服务器之间的数据传输量的问题,这里如果数据量很大可以做存储过程分页,保证每次来回交互数据量在300条之内..
再者就是考虑SQL服务器本身的性能问题,如果是这点的话那么你就只能通知你们BOSS把服务器硬件升级下了..
#23
貌似'某个值'是字符型的,
如果整形就更好了,
(呵呵)
#24
恩 对啊
#25
有select top 100 * from ......
#26
20多W数据不会慢到哪里的!
#27
提升的空间不大
#28
提升的空间不大
#29
。。。
#30
psseno id
联合索引
联合索引
#31
select * from 表 order by id
#32
select psseno from 表 where id= '某个值 ' order by passeno
#33
跟楼主一样的查询,最后还加了个排序,汗
#34
才20万的数据,何必如此费劲呢 不建索引都可以
不过 psseno 字段用decimal太浪费了!建议改成 int 类型,这样可以缩小列宽,提高数据返回速度
不过 psseno 字段用decimal太浪费了!建议改成 int 类型,这样可以缩小列宽,提高数据返回速度
#35
才20万数据还 id='某个值'这样慢建议提高硬件配置 就OK拉
#36
400W条记录的漂过,20W真不多
#37
xuexi
#38
简单点的就建索引
分页查询吧..
分页查询吧..
#1
id为索引
-->
id为聚集索引
-->
id为聚集索引
#2
这么简单的语句的速度应该提高空间不大了
如果速度还是慢就该考虑升级硬件了
如果速度还是慢就该考虑升级硬件了
#3
如果大多查询都是id='某个值',就以ID为索引
#4
这样一定不慢,该做的都做了,还是简单查询,再要改只能改表结构了id char(18)改为bigint
#5
我也觉得这个语句简单,应该没问题。
如果有问题,多半是系统、硬件等问题。
如果有问题,多半是系统、硬件等问题。
#6
使用分页显示
#7
把id设置为聚集索引。
一个表只能有一个聚集索引。
创建主键时,默认在主键字段上创建聚集索引,可以手工调整,把其他字段设置为聚集索引。
一个表只能有一个聚集索引。
创建主键时,默认在主键字段上创建聚集索引,可以手工调整,把其他字段设置为聚集索引。
#8
我看在改效果也不会太明显了。
#9
强烈建议更换硬件!
select psseno,id from a where id= '某个值 ' order by psseno desc
这么精短的代码还慢的话就没法了!
select psseno,id from a where id= '某个值 ' order by psseno desc
这么精短的代码还慢的话就没法了!
#10
同意
#11
加索引.
提升硬件.
提升硬件.
#12
这种简单查询加20万的数据,直接在ID上建uncluster索引,保证1秒种内返回结果 ---- 如果你的SERVER不是386
#13
select psseno from id= '某个值 '
psseno 为主健(聚集索引), id为索引
这已经是最优化的结果,将id改为聚集索引反而更慢。
psseno 为主健(聚集索引), id为索引
这已经是最优化的结果,将id改为聚集索引反而更慢。
#14
好像有一年了阿,不知道硬件又没有升级阿?
#15
根据你的查询条件,并不是十分复杂的查询,所以我想除了提高机器性能,没有更好的提高查询速度的方法了或者是很有限。
#16
同意
#17
psseno,id 联合索引
#18
这个不见得,如果全表的ID都是一个值,哪么这条语句返回的就是全表,如果表够宽的话,想想20万记录应该快不到哪去。
所以:
1、从例子应用来看,建立聚集索引应该对大数据量(指结果集比较大,特别是宽表)应该会由较为明显的效果。
2、应该分析业务数据了,如果结果集只是很少的记录,则没有优化的空间了,如果结果集很大,就应该考虑减少结果了,要么减少返回的记录数,要么减少返回的字段。
#19
到位
#20
恩,支持,经典
#21
把数据整少点 把硬件整牛X点 。。。
#22
想提高查询速率在SQL方面基本就是作索引方面的工作了..
然后你要提高速率还要想到的是每次WEB服务器和SQL服务器之间的数据传输量的问题,这里如果数据量很大可以做存储过程分页,保证每次来回交互数据量在300条之内..
再者就是考虑SQL服务器本身的性能问题,如果是这点的话那么你就只能通知你们BOSS把服务器硬件升级下了..
然后你要提高速率还要想到的是每次WEB服务器和SQL服务器之间的数据传输量的问题,这里如果数据量很大可以做存储过程分页,保证每次来回交互数据量在300条之内..
再者就是考虑SQL服务器本身的性能问题,如果是这点的话那么你就只能通知你们BOSS把服务器硬件升级下了..
#23
貌似'某个值'是字符型的,
如果整形就更好了,
(呵呵)
#24
恩 对啊
#25
有select top 100 * from ......
#26
20多W数据不会慢到哪里的!
#27
提升的空间不大
#28
提升的空间不大
#29
。。。
#30
psseno id
联合索引
联合索引
#31
select * from 表 order by id
#32
select psseno from 表 where id= '某个值 ' order by passeno
#33
跟楼主一样的查询,最后还加了个排序,汗
#34
才20万的数据,何必如此费劲呢 不建索引都可以
不过 psseno 字段用decimal太浪费了!建议改成 int 类型,这样可以缩小列宽,提高数据返回速度
不过 psseno 字段用decimal太浪费了!建议改成 int 类型,这样可以缩小列宽,提高数据返回速度
#35
才20万数据还 id='某个值'这样慢建议提高硬件配置 就OK拉
#36
400W条记录的漂过,20W真不多
#37
xuexi
#38
简单点的就建索引
分页查询吧..
分页查询吧..