总结几个优化点,并非完全版。
数据类型的选择:避免使用NULL,最好设置NOT NULL,并建立默认值;范围取舍要适度,不宜过大(浪费空间和可能读取减慢),也不宜过小(不方便扩展);正确认识字符串中的可变长;注意客户端和存储表所使用的编码是否相同;并非utf8是最好的选择,因为utf8占用的空间更多。
转子查询为连表;避免连表;加随机函数是注意随即值的正确取舍;
union和union all的取舍。union取两个表中不同的显示;union all显示所有行,并不管所连表是否有相同项。这里就有union all的性能提高,因为union all不必想union一样,对表数据进行重新排序,并检索相同项。当数据量庞大时,这是很恐怖的。
查看慢日志。
慎重count(*)等聚合函数。如果是myisam存储引擎,那么该类存储引擎速度极快,但是若为innodb等存储引擎,则当数据库庞大到一定程度,count(*)就会让你陷入漫长的等待;若用于生产,则可能会导致怨声载道。
索引的适当建立。
存储引擎的选择。并不是所有的存储引擎都是需要innodb,有的时候myisam带来的性能问题甜头才是王道;记录日志archive存储引擎则是最好...
用好explain。
多积累,学会做笔记。