mysql高效率写法_mysql高性能写法【转】 | 学步园

数据库结构

字段类型的定义时遵循以下规则:

选用字段长度最小

优先使用定长型

尽可能的定义 "NOT NULL"

数值型字段中避免使用 "ZEROFILL"

如果要储存的数据为字符串, 且可能值已知且有限, 优先使用 enum 或 set

索引的优化

被索引的字段的长度越小, 该索引的效率越高

被索引的字段中, 值的重复越少, 该索引的效率越高

查询语句中, 如果使用了 "group" 子句, 根据其中字段出现的先后顺序建立多字段索引

查询语句中, 如果使用了 "distinct", 根据其中字段出现的先后顺序建立多字段索引

"where" 子句中, 出现对同一表中多个不同字段的 "and" 条件时, 按照字段出现的先后顺序建立多字段索引

"where" 子句中, 出现对同一表中多个不同字段的 "or" 条件时, 对重复值最少的字段建立单字段索引

进行 "内/外连接" 查询时, 对 "连接字段" 建立索引

对 "主键" 的 "unique" 索引 毫无意义, 不要使用

被索引字段尽可能的使用 "NOT NULL" 属性

对写入密集型表, 尽量减少索引, 尤其是 "多字段索引" 和 "unique" 索引

查询语句的优化

多多利用 "explain" 查询索引使用情况, 以便找出最佳的查询语句写法和索引设置方案

慎用 "select *", 查询时只选出必须字段

查询使用索引时, 所遍历的索引条数越少, 索引字段长度越小, 查询效率越高 (可使用 "explain" 查询索引使用情况)

避免使用 mysql 函数对查询结果进行处理, 将这些处理交给客户端程序负责

使用 "limit" 时候, 尽量使 "limit" 出的部分位于整个结果集的前部, 这样的查询速度更快, 系统资源开销更低

在 "where" 子句中使用多个字段的 "and" 条件时, 各个字段出现的先后顺序要与多字段索引中的顺序相符

在 "where" 子句 中使用 "like" 时, 只有当通配符不出现在条件的最左端时才会使用索引

在 mysql 4.1 以上版本中, 避免使用子查询, 尽量使用 "内/外连接" 实现此功能

减少函数的使用, 如果可能的话, 尽量用单纯的表达式来代替

避免在 "where" 子句中, 对不同字段进行 "or" 条件查询, 将其拆分成多个单一字段的查询语句效率更高

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值