MYSQL优化建议

索引

函数的参数,否则无法使用索引
多个列作为条件进行查询时,多列索引,比单列索引性能更高
like %字段名 会使索引失效

建立多列索引的顺序,注意数据分散:

1
2
3
4
SELECT COUNT(DISTINCT staff_id)/COUNT(*) AS staff_id_selectivity,
COUNT(DISTINCT customer_id)/COUNT(*) AS customer_id_selectivity,
COUNT(*)
FROM payment;

对于 BLOB、TEXT 和 VARCHAR 类型的列,必须使用前缀索引
https://juejin.im/post/6844904200254521351

应用

1.多使用Explain看SQL执行计划,核心目的,减少返回数量。

2.切分大查询

3.如非必要,不要使用外键(性能要求不高,业务要求严谨可以考虑)

外键等于把数据的一致性事务实现,全部交给数据库服务器完成
增,删,改影响性能,加大锁表概率,或者死锁

char(n)
gbk 2
utf8 3
utf8mb4 4

Emoji表情使用utf8mb4