为搜索字段创建索引。避免使用 select *,列出需要查询的字段。垂直分割分表。选择正确的存储引擎。
1.索引优化
2.添加查询缓存
3.优化数据库SQL语句
4.数据库Cluster
1>首先,开启慢查询global【配置文件】,(标准可以自定义),通过分析日志文件或直接show,查看哪些查询较慢.
2>针对这条sql,添加Explain,查看其执行计划,查询数据条数/索引等
优化:
1.创建index索引,会占用存储空间,而且会降低DML操作的效率(做增删改需要维护索引),一般在sql中的where或者order by字段建立索引
2.通过查询缓存,可以开启Mybatis的二级缓存,自定义实现Mybatis+redis/Ehcache结合,需要注意的是,只对结果缓存,缓存结果要放在以业务逻辑相关为划分单位。缓存原则是对那些查询需求远大于增删改需求的数据
除此之外,尽量不要在where子句中使用函数,会使索引失效
如果已经确定查询结果只有一条数据(当表中数据的该字段是唯一的),在查询SQL末尾增加 limit 1
模糊查询尽量使用右模糊,左模糊会使索引失效
如果非要使用表连接,最好要保证连接的两个字段都是创建了索引的
避免使用select *
尽量使用非空 not null,可以使用‘’空串代替null。因为‘’不占用空间,null会占用空间的
在SQL语句中不要有运算,否则MySQL会放弃索引。
对于百万级以上的表数据,如果要做表连接查询,一定要对表先分页,然后对分页结果再做表连接。也可以不用表连接
nginx(负载均衡) 读写分离(MyCat) 主从复制(修改配置文件)
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。