一些常见的mysql优化

0 0 392

一些常见的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)来代替手动创建的临时表

留言

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>