老生常谈的问题 ,自己记录一下吧。
设计优化:
1.一般来说,数据库中的每一个数据越小越好,所以可以使用最小冗余的设计思想,或者可以使用最小列的数据类型,使主键尽可能简短。
2.尽量避免使用可变长度列(比如VARCHAR,TEXT,BLOB),如果字段长度固定,用起来将更快,缺点是多占用点空间。
3.尽可能使列属性NULL最少,尽可能使用NOT NULL。
权限优化:
1.通过简化权限来提高查询速度,因为查询执行之前会通过权限系统检查该查询的过程,该过程越简单,查询速度越快。
表优化:
1.如果一个表已经使用了一段时间,随着更新和删除的操作,数据将会变得支离破碎,这样同样会增加在该表中查询所花的时间,可以使用如下语句修复:
OPTIMIZE TABLE tablename;
如果想了解更多OPTIMIZE 请查看原文:点击打开链接
2.或者在命令提示符下操作:
myisamchk -r table
3.也可以使用myisamchk工具根据索引对该表的索引和数据进行排序:
myisamchk --sort-index --sort-records=1 mysql的data数据存放目录 /*/*.MYI
使用索引:
1.在适合的地方添加索引。
2.简化索引,不要创建查询不使用的索引,使用EXLPAIN命令查看索引是否被使用。
使用默认值:
1.在尽可能的地方使用默认值,只在与默认值不同的时候才插入数据。这样可以减少执行INSERT语句所花的时间。
使用EXPLAIN命令分析
1.如果要执行一个复杂的查询或者查询的执行时间大于应该需要的时间,可以使用EXPLAIN检查,根据该语句的结果可以对SQL语句进行修改和优化。
了解EXPLAIN命令点这儿:点击打开链接