数据表结构设计优化
字段使用什么样的类型更合适
字段使用什么样的类型性能更快
考虑空间的问题,考虑范围的问题:
tinyint 加无符号 0-255
smallint 上千
bigint 上千万 上亿
存储字符串长度是否固定:
char 手机号,md5 密码加密(长度确定的字符串)
varchar
enum
特定、固定的分类可以使用enum存储,效率更快
IP地址的存储
可以用整形来存,通过php函数 ip2long 进行转换
建立合适的索引:
– 索引创建原则:
不是越多越好,在合适的字段上创建合适的索引。
会影响写操作,提升读效率
复合索引的前缀原则
– 注意事项:
复合索引的前缀原则
like查询%的问题
全表扫描优化 会放弃使用索引。
or 条件索引使用情况。 or前列有索引,后列没索引,就用不到
字符串类型索引失效的问题。字符串存整形,不加引号,则失效
SQL语句的优化:
– 优化查询过程中的数据访问:
使用 limit
返回列不用 *,直接使用列名
– 优化长难句的查询:
复杂简单化
切分查询
分解关联查询
– 优化特定类型的查询语句
优化count()
优化关联查询
优化子查询(使用关联查询替代子查询)
优化 group by和distinct
优化 limit 和 union
**服务器架构设计优化**
– 存储引擎优化:
使用InnoDb
– 分区操作:
通过特定的策略对数据表进行物理拆分
用户无感知,一张表下有多个分区,partition by
– 分库分表:
水平拆分:
垂直拆分:
转载请注明:微刻 blog.wecot.cn » 简述 Mysql 优化技巧