Mysql的一些简单优化

1.5.6以上默认InnoDB,其他默认搜索引擎为MyISAM
2.在对于金融问题数据误差,采用decimal,获取采用bigint类型存 金额*1000 or 10000 or 100000,避免使用浮点去进行计算
3.设计索引的原则:
1).最适合索引的列是出现在where子句中的列,或连接子句中指定的列,而不是出现在select关键字的选择列表的列。
2).使用唯一索引。对于唯一值的列,索引的效果最好,具有多个重复值的列,其索引效果极差
4.只有当索引的列顺序和order by 子句的顺序完全一致,并且所有列的排序方向一致的时候,mysql才能够使用索引来对结果做排序。(如果查询需要关联多个表,则只有当order by 子句引用的字段全部为第一张表的时候,才能使用索引做排序)
5.采用Join 代替子查询,减少临时表的产生,在Join链接表的字段最好加索引
6.使用procedure analyse()方法优化表的字段类型
7.建议使用in代替or

8.如果不使用MyISAM,也保留16-32M的key_buffer_size大小给予磁盘的临时表索引,使用show status like 'key_read%',Key_reads/key_reads_request的大小正常情况小于0.01

9.当翻页到好后面的时候,我们可以通过条件查找到表的主键,然后通过主键重新inner join 该表去查需要的字段

例如:select from table inner join ( select from table where x.cols="xxxx"  limit 100000,10) as x using(); ,不过正常赶脚都不会有用户翻到那么后面——__——||||

10.对于选择性非常低的列,可以增加特殊的索引来做排序

11.Explain的type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

你可能感兴趣的:(Mysql)