关于mysql数据库优化

关于mysql数据库优化

 

以我之愚见,数据库的优化在于优化存储和查询速度mysql

目前主要的优化我认为是优化查询速度,查询速度快了,提升了用户的体验sql

 

 

我认为优化主要从两方面进行考虑,数据库

优化数据库对象,函数

优化sql优化

优化数据库对象

1.优化表的数据类型,对于每一个字段用合适的数据类型,既能解决磁盘的存储空间,又能避免浪费程序运行时物理内存的浪费,提升查询速度。对象

      好比对于不会有负数的整数类型,使用无符号整型,整数范围很小的用tinyint 或者smallint索引

 

2 经过拆分表来提升表的访问效率。(对于MyISAM)内存

垂直拆分,水平拆分,若是一个表中一些列经常使用,一些列不经常使用,能够用垂直拆分。缺点查询全部数据的时候须要连表。字符串

 

3逆规范化hash

  增长冗余列,    冗余列值得是多个表中有相同的列,这样作是避免查询的时候进行连表操做

 增长派生列     之增长的列来自其余表的数据,由其余表的数据计算获得。这样是为了减小链接操做,避免使用聚合函数

从新组表   对用户常常查看的数据是使用两张表连起来的数据,能够从新租一张表,也是减小连表的操做

4使用中间表       中间表复制源表的部分数据,而且与源表隔离,在中间表上查询统计操做不会影响源表。

中间表能够灵活增长索引,或增长临时的字段,从而提升统计查询效率

 

2、sql优化

 

·  在表的查询中,有这个几种查询类型,

1遍历全表   all

2 扫描全索引 遍历整个索引   index

3 索引范围扫描,常见于<   >  >=  between    range

4使用非惟一索引或者惟一索引的前缀

5  惟一索引,对于每一个索引的键值,表中只有一条记录匹配 eq_ref

6 const/system  单表中最多有一个匹配行,查询速度很是快,例如根据主键或者惟一索引

7 null 对于null, mysql不用返回直接能获得结果

 

索引是数据库优化最经常使用和最重要的手段之一。

索引的存储分类:

B-tree索引 最经常使用

HASH索引  只有memory支持

R-Tree索引 空间索引,不经常使用

Full-text 全文索引

 

比较经常使用的是B-Tree索引和hash索引,hash索引适合key-value查询,不适合范围查找

b-tree索引并非二叉树,而是平衡树

 

注意对于查询的的列是字符串,要加上引号,否则不会用到索引。

对于 or 分隔开的条件,若是or 前面的列中有索引,然后面的列中没有索引,则不会用到索引。

对于插入操做

尽可能使用多个值表的insert语句,这种方式大大减小客户端与数据库的链接,关闭等操做。

 

避免使用子查询,用效率更高的join,join 效率更高是由于mysq不须要再内存中建立临时表

 

优化分页

相关文章
相关标签/搜索