mysql 优化

尽量不在数据库做运算
建议单库不超过300-400个表
单表字段数上限控制在20~50个
将字符转化为数字
优先使用ENUM或SET
避免使用NULL字段(NULL列加索引,需要额外空间;含NULL复合索引无效)
少用并拆分TEXT/BLOB(TEXT类型处理性能远低亍VARCHAR,强制生成硬盘临时表,若必须使用则拆分到单独的表)
不在数据库里存图片
谨慎合理添加索引(减慢更新,索引不是赹多越好)
能不加的索引尽量不加(最好不超过字段数20%)
尽量不用外键
拒绝大SQL,拆解成多条简单SQL
保持事务(连接)短小
线上OLTP系统(线下库另论): 尽可能少用存储过程  尽可能少用触发器  减用使用MySQL函数对结果进行处理;
尽量不用SELECT * ,叧取需要数据列
同一字段,将or改写为in() (控制个数);不同字段,将or改为union
避免负向查询 NOT、!=、<>、!<、!>、NOT EXISTS、NOT IN、 NOT LIKE等
避免 % 前缀模糊查询
COUNT(*)的资源开销大,尽量丌用少用
LIMIT高效分页:和where 结合Select * from table WHERE id >= ( select id from table limit 10000,1 ) limit 10;
若无需对结果进行去重,则用UNION ALL , UNION有去重开销
高并发DB不建议进行两个表以上的JOIN
EXPLAIN 你的 SELECT 查询
当只要一行数据时使用 LIMIT 1
为搜索字段建索引
在Join表的时候使用相当类型的列,并将其索引
千万不要 ORDER BY RAND()
从 PROCEDURE ANALYSE() 取得建议
把IP地址存成 UNSIGNED INT
固定长度的表会更快:表中没有如下类型的字段: VARCHAR,TEXT,BLOB。
拆分大的 DELETE 或 INSERT 语句

你可能感兴趣的:(mysql 优化)