第二,采用物化视图,提前将数据查询出来
第三,升级SQL版本,SQL2008比SQL2000的速度提高是很多的
第四,如果表有大容量的字段,如 图片,文档,应该考虑用FTP来做,不是把数据放在数据库第五,提高电脑性能
count(*)在数据多的时候非常慢。
优化方法
这要从InnoDB的索引说起, InnoDB的索引是B+Tree。
对主键索引来说:它只有在叶子节点上存储数据,它的key是主键,并且value为整条数据。
对辅助索引来说:key为建索引的列,value为主键。
这给我们两个信息:
1. 根据主键会查到整条数据
2. 根据辅助索引只能查到主键,然后必须通过主键再查到剩余信息。
所以如果要优化count(*) *** 作的话,我们需要找一个短小的列,为它建立辅助索引。
在我的例子中就是status,虽然它的”severelity”几乎为0.
先建立索引:ALTER TABLE test1 ADD INDEX (status)
然后查询,查询速度提升近13倍。
参考:网页链接
如果索引是str这一列,结果又会是怎么样呢?
先建立索引: alter table test1 add index (str) 也很快,但是比起status这列还是有着1.5倍左右的差距。
只记录一列的总条数会快点count(列名)。或者where条件改为city like '%扬州' or city like '扬州%',city like '%扬州%' 是进行全表查询,修改后是两个范围的扫描,性能也能提高一些,你试一试。还可以使用索引。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)