1.在表设计阶段,选取最合适的字段属性(字段类型和长度)
char(固定长度字符长度)>varchar(可变长度的字符)
字段长度越短查询性能越高
DATETIME 大小为8个字节,混合日期和时间值
TIMESTAMP 大小为8个字节,混合日期和时间值,时间戳
2.用户连接来代替子查询
子查询笛卡尔积过高,数据量较大的场合,对数据库性能消耗过大,可能使数据库卡死崩溃
3.使用联合
使用联合(UNION)来代替手动创建的临时表
4.事物
当需要执行多条sql来满足一个需求时,事物可以很好的保持数据库中数据的完整性和一致性。
5.锁定表
在执行事物的过程中,数据库将会被锁定,
因此其他用户的请求只能暂时等待直到该事物结束。此时我们可以通过锁定表来获得更好的性能。
6.外键
保护数据的关联性
7.使用索引
索引是提高数据库性能的常用方法,他可以令数据库服务器以比没有索引快得多的速度检索特定的行,
尤其是在查询语句当中包含有max()、min()和order by这些命令的时候,性能提高更为明显。
一般说来,索引应建立在哪些将用于join、where判断和oder by排序的字段上。尽量不要对数据库中某个含有大量重复的值的字段建立索引
8.sql调优
使用索引时应注意:
1.最好是在相同类型的字段进行比较的操作
2.在建有索引的字段上尽量不要使用函数进行操作,索引会失效
3.在搜索字符类型字段时,尽量少的使用like关键字和通配符,系统性能较大
SELECT `column` FROM `table` WHERE `field` like '%keyword%';不会使用索引
SELECT `column` FROM `table` WHERE `field` like 'keyword%';会使用索引
如果不清楚前缀,则可以考虑使用locate、position、instr函数