Mysql优化

Mysql优化

1 加索引,用explain查询sql的执行计划

所有MySQL列类型可以被索引。对相关列使用索引是提高SELECT操作性能的最佳途径。使用索引应该注意以下几点:

1) MySQL只会使用前缀,例如key(a, b) …where b=5 将使用不到索引。

2) 要选择性的使用索引。在变化很少的列上使用索引并不是很好,例如性别列。

3) 在Unique列上定义Unique index。

4) 避免建立使用不到的索引。

5) 在Btree index中(InnoDB使用Btree),可以在需要排序的列上建立索引。

6) 避免重复的索引。

7) 避免在已有索引的前缀上建立索引。例如:如果存在index(a,b)则去掉index(a)。

8) 控制单个索引的长度。使用key(name(8))在数据的前面几个字符建立索引。

9) 越是短的键值越好,最好使用integer。

10) 在查询中要使用到索引(使用explain查看),可以减少读磁盘的次数,加速读取数据。

11) 相近的键值比随机好。Auto_increment就比uuid好。

12) Optimize table可以压缩和排序index,注意不要频繁运行。

13) Analyze table可以更新数据。

 

源文档 <http://www.iteye.com/topic/144033>

 

 

1 利用limit 1取得唯一行

2 避免使用select(*)

3 数据类型

最基本的优化之一就是使表在磁盘上占据的空间尽可能小。这能带来性能非常大的提升,因为数据小,磁盘读入较快,并且在查询过程中表内容被处理所占用的内存更少。同时,在更小的列上建索引,索引也会占用更少的资源。

可以使用下面的技术可以使表的性能更好并且使存储空间最小:

1) 使用正确合适的类型,不要将数字存储为字符串。

2) 尽可能地使用最有效(最小)的数据类型。MySQL有很多节省磁盘空间和内存的专业化类型。

3) 尽可能使用较小的整数类型使表更小。例如,MEDIUMINT经常比INT好一些,因为MEDIUMINT列使用的空间要少25%。

4) 如果可能,声明列为NOT NULL。它使任何事情更快而且每列可以节省一位。注意如果在应用程序中确实需要NULL,应该毫无疑问使用它,只是避免 默认地在所有列上有它。

5) 对于MyISAM表,如果没有任何变长列(VARCHAR、TEXT或BLOB列),使用固定尺寸的记录格式。这比较快但是不幸地可能会浪费一些空间。即使你已经用CREATE选项让VARCHAR列ROW_FORMAT=fixed,也可以提示想使用固定长度的行。

6) 使用sample character set,例如latin1。尽量少使用utf-8,因为utf-8占用的空间是latin1的3倍。可以在不需要使用utf-8的字段上面使用latin1,例如mail,url等。

 

源文档 <http://www.iteye.com/topic/144033>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值