您的位置:首页 > 数据库 > MySQL

MySQL性能优化的建议

2017-03-24 13:59 246 查看

注意事项列表

为查询缓存优化你的查询

EXPLAIN 你的 SELECT 查询

当只要一行数据时使用 LIMIT 1

为搜索字段建索引

在Join表的时候使用相当类型的例,并将其索引

千万不要 ORDER BY RAND()

避免 SELECT *

永远为每张表设置一个ID

使用 ENUM 而不是 VARCHAR

从 PROCEDURE ANALYSE() 取得建议

尽可能的使用 NOT NULL

Prepared Statements

无缓冲的查询

把IP地址存成 UNSIGNED INT

固定长度的表会更快

垂直分割

拆分大的 DELETE 或 INSERT 语句

越小的列会越快

选择正确的存储引擎

使用一个对象关系映射器(Object Relational Mapper)

小心“永久链接”

具体操作

为查询缓存优化你的查询:

大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。

这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的。因为,我们某些查询语句会让MySQL不使用缓存。

// 查询缓存不开启

r=mysqlquery(“SELECTusernameFROMuserWHEREsignupdate>=CURDATE()”);//开启查询缓存today = date(“Y-m-d”);

r=mysqlquery("SELECTusernameFROMuserWHEREsignupdate>=′today’”);

EXPLAIN 你的 SELECT 查询

当只要一行数据时使用 LIMIT 1

为搜索字段建索引

在Join表的时候使用相当类型的例,并将其索引

千万不要 ORDER BY RAND()

避免 SELECT *

永远为每张表设置一个ID

使用 ENUM 而不是 VARCHAR

从 PROCEDURE ANALYSE() 取得建议

尽可能的使用 NOT NULL

Prepared Statements

无缓冲的查询

把IP地址存成 UNSIGNED INT

固定长度的表会更快

垂直分割

拆分大的 DELETE 或 INSERT 语句

越小的列会越快

选择正确的存储引擎

使用一个对象关系映射器(Object Relational Mapper)

小心“永久链接”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql