面试_mysql_数据库优化

47 阅读1分钟

你对数据库优化有哪些了解呀?

针对数据库的优化优先级大致如下:

  • SQL及索引:优化慢SQL、利用好索引,是最重要的;
  • 数据库表结构:分表分库,是对数据量级的处理;
  • 硬件:加缓存,建立集群,nginx负载均衡、消息队列;



实际开发中应该怎样利用好索引,怎样优化SQL语句?

关于索引(内部手段):减少扫描的行数,最有效的方法就是使用索引。有些情况数据库引擎会放弃索引进行全表扫描,需要尽可能避免。比如:模糊查询、or关键字、where条件中等号的左侧进行表达式或函数操作、where 1=1操作、正则表达式。

关于SQL语句(外部手段):减少请求的数据量

  • 把访问频率高的数据放到缓存

  • 只返回必要的列:减少 select * 语句的使用

  • 只返回必要的行:使用 limit 语句限制行数

  • 多表关联查询时,小表在前,大表在后

  • 在where中,把过滤数据多的条件往前放,最快速度缩小结果集。(MySQL5.7已经实现了where后条件的自动调节工作)