Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1377523
  • 博文数量: 209
  • 博客积分: 464
  • 博客等级: 下士
  • 技术积分: 3762
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-24 18:25
  • 认证徽章:
个人简介

阿弥陀佛

文章分类

全部博文(209)

文章存档

2019年(3)

2018年(5)

2017年(6)

2016年(10)

2015年(9)

2014年(73)

2013年(90)

2012年(13)

分类: 服务器与存储

2014-11-14 20:04:00

1.在使用的时候,不要使用select * ,因为这样不指定字段将消耗比较多的系统资源。
2.对经常使用的搜索字段使用索引,不一定是主键,通过针对某一个字段创建索引,系统就会以该key作为B+树的关键字,生成一个B树,value为所查找的数据在数据文件中的行号。


3.垂直切割

“垂直分割”是一种把数据库中的表按列变成几张表的方法,这样可以降低表的复杂度和字段的数目,从而达到优化的目的。(以前,在银行做过项目,见过一张表有100多个字段,很恐怖)

示例一:在Users表中有一个字段是家庭地址,这个字段是可选字段,相比起,而且你在数据库操作的时候除了个人信息外,你并不需要经常读取或是改写这个字段。那么,为什么不把他放到另外一张表中呢? 这样会让你的表有更好的性能,大家想想是不是,大量的时候,我对于用户表来说,只有用户ID,用户名,口令,用户角色等会被经常使用。小一点的表总是会有好的性能。

示例二: 你有一个叫 “last_login” 的字段,它会在每次用户登录时被更新。但是,每次更新时会导致该表的查询缓存被清空。所以,你可以把这个字段放到另一个表中,这样就不会影响你对用户ID,用户名,用户角色的不停地读取了,因为查询缓存会帮你增加很多性能。

另外,你需要注意的是,这些被分出去的字段所形成的表,你不会经常性地去Join他们,不然的话,这样的性能会比不分割时还要差,而且,会是极数级的下降。

阅读(1237) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册