​二十种实战调优MySQL性能优化的经验

​http://www.searchdatabase.com.cn/showcontent_58391.htm
 
【为查询缓存优化你的查询】
像 NOW() 和 RAND() 或是其它的诸如此类的SQL函数都不会开启查询缓存,因为这些函数的返回是会不定的易变的。所以,你所需要的就是用一个变量来代替MySQL的函数,从而开启缓存。
 
 
【EXPLAIN 你的 SELECT 查询】
使用 EXPLAIN 关键字可以让你知道MySQL是如何处理你的SQL语句的。
 
【当只要一行数据时使用 LIMIT 1】
当你查询表的有些时候,你已经知道结果只会有一条结果,但因为你可能需要去fetch游标,或是你也许会去检查返回的记录数。
 
【为搜索字段建索引】
  索引并不一定就是给主键或是唯一的字段。如果在你的表中,有某个字段你总要会经常用来做搜索,那么,请为其建立索引吧。
 
【在Join表的时候使用相当类型的例,并将其索引】
  如果你的应用程序有很多 JOIN 查询,你应该确认两个表中Join的字段是被建过索引的。这样,MySQL内部会启动为你优化Join的SQL语句的机制。
  而且,这些被用来Join的字段,应该是相同的类型的。例如:如果你要把 DECIMAL 字段和一个 INT 字段Join在一起,MySQL就无法使用它们的索引。对于那些STRING类型,还需要有相同的字符集才行。(两个表的字符集有可能不一样)
 
【避免 SELECT *】
 
【永远为每张表设置一个ID】
  我们应该为数据库里的每张表都设置一个ID做为其主键,而且最好的是一个。
 
【使用 ENUM 而不是 VARCHAR】
  ENUM 类型是非常快和紧凑的。在实际上,其保存的是 TINYINT,但其外表上显示为字符串。这样一来,用这个字段来做一些选项列表变得相当的完美。
  如果你有一个字段,比如“性别”,“国家”,“民族”,“状态”或“部门”,你知道这些字段的取值是有限而且固定的,那么,你应该使用 ENUM 而不是 VARCHAR。
 
【从 PROCEDURE ANALYSE() 取得建议】
 
【尽可能的使用 NOT NULL】
 
【把IP地址存成 UNSIGNED INT】
 
【固定长度的表会更快】
 
【垂直分割】
 
【越小的列会越快】
 
【选择正确的存储引擎】
 
 
其他资料
mysql性能优化-慢查询分析、优化索引和配置:http://www.oicto.com/mysql-explain-show/
 
 
posted @ 2015-09-08 22:31  Uncle_Nucky  阅读(161)  评论(0编辑  收藏  举报