你对数据库优化有哪些了解呀?
针对数据库的优化优先级大致如下:
- SQL及索引:优化慢SQL、利用好索引,是最重要的;
- 数据库表结构:分表分库,是对数据量级的处理;
- 硬件:加缓存,建立集群,nginx负载均衡、消息队列;
实际开发中应该怎样利用好索引,怎样优化SQL语句?
关于索引(内部手段):减少扫描的行数,最有效的方法就是使用索引。有些情况数据库引擎会放弃索引进行全表扫描,需要尽可能避免。比如:模糊查询、or关键字、where条件中等号的左侧进行表达式或函数操作、where 1=1操作、正则表达式。
关于SQL语句(外部手段):减少请求的数据量
-
把访问频率高的数据放到缓存
-
只返回必要的列:减少
select *
语句的使用 -
只返回必要的行:使用
limit
语句限制行数 -
多表关联查询时,小表在前,大表在后
-
在where中,把过滤数据多的条件往前放,最快速度缩小结果集。(MySQL5.7已经实现了where后条件的自动调节工作)