数据库的结构很重要,表的建立,对需要用到的字段进行建立索引:尽量单表查询。
CREATE
INDEX
index_name
ON
table_name
(column_name);
多字段查询,建立索引:
CREATE
INDEX
index_name
ON
table_name
(column_name1,column_name2);
唯一索引
:
CREATE
UNIQUE
INDEX
index_name
ON
table_name
(column_name);
首先应该确定是谁慢的,往往是程序处理方面的问题而不是数据库的问题。
程序方面应该尽可能的减少数据查询返回的内容,比如可以查询返回ID,然后再根据ID一条一条的查询具体内容,看似慢了,在数据量达的时候快很多
对于数据可以参照下面几点
1、优化SQL语句,SQL语句对查询速度影响最大
2、对于经常查询的字段作索引。但是这样会增加修改时的压力
4、优化SQLServer,比如给其分配固定的内存,预先分配查询内存,调整CPU使用率等。
5、优化硬件资源,比如使用更高的服务器或者硬盘,独立安排数据库的数据文件和索引文件,将数据文件分布于不同的物理硬盘上等等
6、考虑使用分布数据库或者对大表进行拆分
另外,2G的数据库应该不算很大了,我处理过18G的数据库,8000万条记录,查询速度可以被接受
1建立索引,尽可能把索引建立到你你经常比较的字段上,如select a,b,c,d from a where 索引字段=值,这个索引字段最好是数值型数据
2慢有更多情况,
情况1:远程查询,其实可能查询不慢,由于数据量大,传输过程慢
情况2:WHERE 后面的比较数据太多,比如 like 类的语句
情况3:需要哪个字段只取那个字段就行了,比如select from a与select b,c,d from a速度是有差距的
3数据库定期维护,压缩,把不常用的数据备份后放入备份库里,查询时查备份库等
问题补充:
第一条:建立索引,怎么建立,我也听说过,但不知道怎么使用
答:每种数据建立索引的方法有差异,比如SQL SERVER 2000中可对多个字段进行索引,比如SQL SERVER2000中有命令
CREATE INDEX
为给定表或视图创建索引。
只有表或视图的所有者才能为表创建索引。表或视图的所有者可以随时创建索引,无论表中是否有数据。可以通过指定限定的数据库名称,为另一个数据库中的表或视图创建索引。
语法
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name
ON { table | view } ( column [ ASC | DESC ] [ ,n ] )
[ WITH < index_option > [ ,n] ]
[ ON filegroup ]
< index_option > ::=
{ PAD_INDEX |
FILLFACTOR = fillfactor |
IGNORE_DUP_KEY |
DROP_EXISTING |
STATISTICS_NORECOMPUTE |
SORT_IN_TEMPDB
}
第三条:数据库定期维护,压缩:怎么个压缩法?及时备份数据到备份库查询备份库,那查询时不是还慢吗?
答:这个有压缩工具,基本上每种数据库都有自己的压缩数据库的工具
以上就是关于如何解决SQL Server数据库查询速度慢全部的内容,包括:如何解决SQL Server数据库查询速度慢、SQL数据库容量大,查询速度慢,有何解决方案、php+mysql在数据库里数据大的话查询很慢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)