面试题23 优化MySQL数据库的方法
【分析】以下总结纯属个人意见,读者可以发表更好的想法。
(1)数据库设计方面允许部分数据冗余,避免JOIN操作,以提高查询效率。
(2)系统架构设计方面,表散列,把海量数据散列到几个不同的表里面。快慢表,快表只留最新数据,慢表是历史存档。
(3)检查有没有少加索引。
(4)写高效的SQL语句,看看有没有写低效的SQL语句,比如生成笛卡儿积的全连接、大量的group By和order by、没有limit等。必要的时候,把数据库逻辑封装到DBMS端的存储过程里面、缓存查询结果等。
(5)只从数据库取必需的数据,只传送必须的SQL语句。
(6)必要的时候用不同的存储引擎,比如InnoDB,可以减少死锁;HEAP可以提高一个数量级的查询速度。