mysql优化实践
1.使用explan你的查询,这个关键字可以让你知道mysql是如何处理你的sql语句,可以分析查询语句或者是表结构性能瓶颈。还可以告诉你索引主键被如何利用,表数据时如何被搜索和排序的。
2.当只要一行数据时使用LIMIT 1。当你查询表的时候,已经知道结果只会有一条结果。
3.为搜索字段建立索引。如果有某个字段经常要用来做搜索,那么请为其建立索引。
4.在join表的时候使用相当类型的例,并将其索引。如果应用程序有很多join查询,应该确认两个表中的join字段是被建过索引的。而且这些被用来join的字段应该是相同类型的。
5.避免 select * 。需要什么就取什么。
6.永远为每张表设置一个ID。应该为数据库里的每张表设置一个ID为主键,最好是INT类型的,并且设置自增长。不要使用其他名称作为主键,使用varchar类型当主键会使得性能下降
7.使用ENUM而不是varchar。如果你有一个字段,比如性别,国家,名族等。你知道这些字段取值是有限而且固定的。就应该使用ENUM类型而不是varchar类型。
8.尽可能的使用NOT NULL。null其实需要额外的空间,在进行比较的时候你的程序会更复杂。
9.使用Prepared Statements。是预编译的。可以防止sql注入
10.固定长度的表会更快。如果表中所有字段都是固定长度的,整个表会被认为是static的,例如表中没有如下类型的字段:varchar
11.垂直分割。是一种把数据库中的表按列变成几张表的方法。这样可以降低表的复杂度和字段数目,达到优化的目的。
12.拆分大的delete或者insert语句。如果需要在一个在线的网站上去执行一个大的delete或者insert需要非常小心。因为这个两个操作会锁表。使用limit是一个好的方法。
13.选择正确的存储引擎。在mysql中有两个存储引擎MyISam和InnoDB,每个引擎都有利弊。myISam适合一些需要大量查询的应用,但其对于大量写操作并不是很好。InnoDB是一个复杂的存储引擎。他支持行锁,在写操作比较多的时候,会更优秀。并且支持事务。