适当建立索引
2
对表进行水平划分
3
选择适当的字段类型,特别是主键
4
文件、图片等大文件用文件系统存储,不用数据库
5
外键表示清楚,方便建立索引
6
宁可集中批量 *** 作,避免频繁读写
7
选择合适的引擎
8
sql语句优化
这个问题涉及一下几个知识点
一、一般情况表的优化主要是索引,恰当的索引能加快查询的速度,当然索引的建立与表的主要用途有关,特别是表最频繁的 *** 作是查询、添加、删除,查询是按哪些条件进行查询。
二、所谓的大表,对于数据库来说,没有绝对大小的限制,只要 *** 作系统的硬盘、内存合适,表在一定范围内大一点、小一点对性能影响不大。分表是一个痛苦的过程,因为从逻辑上把表分成几个部分,会把查询、添加、修改的应用程序变得相当复杂,除非万不得已,没人会这样选择。数据太大的时候,一般使用磁盘阵列来提高性能,物理上一个大文件是分片存在不同的硬盘上,不同的硬盘可以并行读取,内存组装一下,达到了高速读取的效果。
MySQL超大表如何提高count速度经常用到count统计记录数,表又超级大,这时候sql执行很慢,就是走索引,也是很慢的,怎么办呢?
1.这个时候我们就要想为什么这么慢:根本原因是访问的数据量太大,就算只计算记录数也是很慢的。
2.如何解决?减少数据访问量。
3.怎么才能减少访问量呢?更小的索引。
4.怎么能使索引更小呢?创建前缀索引。
至此我们的方案出来了!下面看看具体的:
表结构:
CREATE TABLE `sbtest3` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`k` int(11) NOT NULL DEFAULT '0',
`c` char(120) NOT NULL DEFAULT '',
`pad` char(60) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `k_3` (`k`)
) ENGINE=InnoDB AUTO_INCREMENT=5000001 DEFAULT CHARSET=latin1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)