以下的文章主要介绍的是mysql数据库的基本结构,mysql数据库索引的优化方案与查询语句的优化这些内容。这些相关的内容说对于数据库新手来说可以说意义很大,以下就是文章的具体内容描述。 mysql数据库结构 字段类型的定义时遵循以下规则: 选用字段长度最小
以下的文章主要介绍的是mysql数据库的基本结构,mysql数据库索引的优化方案与查询语句的优化这些内容。这些相关的内容说对于数据库新手来说可以说意义很大,以下就是文章的具体内容描述。
mysql数据库结构
字段类型的定义时遵循以下规则:
选用字段长度最小
优先使用定长型
尽可能的定义 not null
数值型字段中避免使用 zerofill
如果要储存的数据为字符串, 且可能值已知且有限, 优先使用 enum 或 set
mysql数据库索引的优化
被索引的字段的长度越小, 该索引的效率越高
被索引的字段中, 值的重复越少, 该索引的效率越高
查询语句中, 如果使用了 group 子句, 根据其中字段出现的先后顺序建立多字段索引
查询语句中, 如果使用了 distinct, 根据其中字段出现的先后顺序建立多字段索引
where 子句中, 出现对同一表中多个不同字段的 and 条件时, 按照字段出现的先后顺序建立多字段索引
where 子句中, 出现对同一表中多个不同字段的 or 条件时, 对重复值最少的字段建立单字段索引
进行 内/外连接 查询时, 对 连接字段 建立索引
对 主键 的 unique 索引 毫无意义, 不要使用
被索引字段尽可能的使用 not null 属性
对写入密集型表, 尽量减少索引, 尤其是 多字段索引 和 unique 索引
mysql数据库查询语句的优化
多多利用 explain 查询索引使用情况, 以便找出最佳的查询语句写法和索引设置方案
慎用 select *, 查询时只选出必须字段
查询使用索引时, 所遍历的索引条数越少, 索引字段长度越小, 查询效率越高 (可使用 explain 查询索引使用情况)
避免使用 mysql 函数对查询结果进行处理, 将这些处理交给客户端程序负责
使用 limit 时候, 尽量使 limit 出的部分位于整个结果集的前部, 这样的查询速度更快, 系统资源开销更低
在 where 子句中使用多个字段的 and 条件时, 各个字段出现的先后顺序要与多字段索引中的顺序相符
在 where 子句 中使用 like 时, 只有当通配符不出现在条件的最左端时才会使用索引
在 mysql 4.1 以上版本中, 避免使用子查询, 尽量使用 内/外连接 实现此功能
减少函数的使用, 如果可能的话, 尽量用单纯的表达式来代替
避免在 where 子句中, 对不同字段进行 or 条件查询, 将其拆分成多个单一字段的查询语句效率更高