扫码关注官方订阅号
不适用memcahe和redis这些?单从表和字段的设计,包括怎么提高查询速度呢???
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
VARCHAR 长度不要分配太多, 够用就好
尽量使用 TINYINT、SMALLINT、MEDIUM_INT 作为整数类型而非 INT
TINYINT
SMALLINT
MEDIUM_INT
INT
使用枚举或整数代替字符串类型
尽量不要使用 NULL 字段, 因为可能会导致索引失效
NULL
尽量使用 TIMESTAMP而非 DATETIME, 因为 TIMESTAMP 只占用4字节, 而 DATETIME 占用8字节.
TIMESTAMP
DATETIME
对频繁查询的字段添加索引.
不要在 WHERE 中对字段进行 NULL 值判断, 否则将导致引擎放弃使用索引而进行全表扫描
WHERE
建立索引的字段需要有尽可能大的区分度. 像 性别 这样的字段, 只有两个值的, 就不要建索引了.
注意最左前缀匹配原则.
设置开启慢查询日志,用explain分析sql语句,explain extended分析show warnings查看mysql优化器内部改写的sql语句等等,高性能mysql这本书上有介绍,可以看看
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
字段优化
VARCHAR 长度不要分配太多, 够用就好
尽量使用
TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT使用枚举或整数代替字符串类型
尽量不要使用
NULL字段, 因为可能会导致索引失效尽量使用
TIMESTAMP而非DATETIME, 因为TIMESTAMP只占用4字节, 而DATETIME占用8字节.添加索引
对频繁查询的字段添加索引.
不要在
WHERE中对字段进行NULL值判断, 否则将导致引擎放弃使用索引而进行全表扫描建立索引的字段需要有尽可能大的区分度. 像 性别 这样的字段, 只有两个值的, 就不要建索引了.
注意最左前缀匹配原则.
设置开启慢查询日志,用explain分析sql语句,explain extended分析show warnings查看mysql优化器内部改写的sql语句等等,高性能mysql这本书上有介绍,可以看看