一些常见的mysql优化
一些常见的mysql优化:
(1)防止运用 NULL
NULL对于大多数数据库都须要特殊处理,MySQL也不例外,它须要更多的代码,更多的检查和特殊的索引逻辑,
有些开发人员完全没有意识到,建立表时NULL是默认值,但大多数时候应该运用 NOT NULL,或者运用一个特殊的值,如0,-1作为默认值。
(2)尽可能运用更小的字段
(3) WHERE my_col < 4/2 ==== WHERE my_col * 2 < 4
SELECT * FROM my_tb1 WHERE YEAR(date_col) < 1990
索引列my_col,date_col未被使用,
如果在函数调用或算术表达式中使用列,MySQL不能使用这样的索引,因为它必须对每行计算表达式的值
(4) 在比较中<> <= >= 利用索引列时,应该使用那些类型相同的列,相同的列类型比不同类型提供更好的性能.
(5) WHERE last_name LIKE “Mac%” 或 WHERE last_name >= “Mac” AND last_name < “Mad”
不要习惯在串的两边加“ %”
(6) 利用EXPLAIN 检验优化程序操作
(7) 利用无WHERE 子句的DELETE 语句删除整个表的内容是最快的
(8) DELETE FROM tb1_name WHERE 1> 0
这迫使MySQL进行逐行的删除。相应的查询执行要慢得多,但将返回真正删除的行数。它还将保持当前的
AUTO_INCREMENT 序列的编号,不过只对MyISAM 表有效
(9) ORDER BY RAND() 随机地对结果进行排序.
(10) order by 一般后面加索引
(11) 不要滥用MySQL的类型自动转换功能,如:数字3就不能写成字符‘3’,加重MySQL的类型转换,会使它的性能下降
(12) 对于那些声明为可变长度的数据列(如varchar型),时间长了会使得数据表出现很多碎片,减慢查询效率,
我们可以用OPTIMIZE TABLE语句对之进行整理
(13) LOAD DATA 语句要比INSERT 语句效率高,如果必须使用INSERT 语句,请尽量使他们集中在一起,减少对索引的刷新次数
(14) 选取最适用的字段属性
(15)“省份”或者“性别”,我们可以将它们定义为ENUM类型。因为在MySQL中,ENUM类型被当作数值型数据来处理,
而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能。
(16) 子查询可以被更有效率的连接(JOIN).. 替代
(17) 使用联合(UNION)来代替手动创建的临时表
