Mysql索引优化

查看索引的使用情况
如果索引正在工作,Handler_read_key的值将很高,这个值代表了一个行被索引读的次数
Hander_read_rnd_next的值高则意味着查询运行低效,并且应该建立索引补救。


检查一个表一般用check (检查一个或多个表是否有错误)
mysql>check table tablename


优化表
如果已经删除了表的一大部分,或者如果已经对含有可变长度行的表进行了很多的改动,
则需要做定期优化。这个命令可以将表中的空间碎片进行合并,但是此命令只对MyISAM、BDB和
InnoDB起作用
mysql>optimize table tablename


快速导入导出
select name from t1 into outfile "/tmp/test.txt"
load data infile "/tmp/test.txt" into table t1(name);


对myisam引擎的表
alter table tablename disable keys
loading the data...
alter table tablename enable keys
索引更新可以提高速度,但是对innodb引擎的表无效


关闭唯一性校验可以提高导入效率
在导入数据前先执行set unique_checks=0,关闭唯一性校验,在导入后结束
唯一性校验,可以提高导入效率。


关闭自动提交可以提高导入效率
在导入数据前先执行set autocommit=0,可以提高效率
 
优化insert语句
尽量使用多个表的insert语句, 这样可以大大的缩短客户与数据库的连接
、关闭等消耗。
当从一个文件中装载一个表时,使用load data infile.这个通常比使用很多insert
语句块20倍
可以使用insert delayed(马上执行)语句得到更高的效率。
可以增加bulk_insert_buffer_size变量值的方法来提高速度
将索引文件和数据文件分别放在不同的磁盘上。
 
 
group by优化
group by 想要避免排序结果的消耗那么加上order by null



一般用联表查询而不用子查询,因为子查询用不上索引

你可能感兴趣的:(Mysql索引优化)