锁定老帖子 主题:海量数据处理专题(七)——数据库索引及优化
精华帖 (2) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-08-17
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 数据库索引好比是一本书前面的目录,能加快数据库的查询速度。 建立索引的目的是加快对表中记录的查找或排序。 创建索引可以大大提高系统的性能。 索引是建立在数据库表中的某些列的上面。在创建索引的时候,应该考虑在哪些列上可以创建索引,在哪些列上不能创建索引。一般来说,应该在这些列上创建索引: 此外,除了数据库索引之外,在LAMP结果如此流行的今天,数据库(尤其是MySQL)性能优化也是海量数据处理的一个热点。下面就结合自己的经验,聊一聊MySQL数据库优化的几个方面。 MySQL数据库性能优化:http://itmian.com/2011/08/17/mysql%e6%80%a7%e8%83%bd%e4%bc%98%e5%8c%96/ 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-08-25
通过索引来优化数据库也是有一定极限的,如果真是海量数据,
纵向切分、定期数据归档的方式更有意义一些吧。 |
|
返回顶楼 | |
发表时间:2011-08-26
看了前2节,觉得楼主还有很多关键的地方没有说出来,比如:
第一:何为聚簇索引和非聚簇索引(只看到优点没看到缺点,没有看到定义,另外和oracle 中的 位图 唯一 和一般索引定义有和区别。)。 第二:能为空的字段,不应该建索引(为什么,)。 第三:优化sql 的时候,即便该列上有索引,但是执行计划的时候依然是full sacn 要如何处理? 第四:一个表中最多能有多少索引,为什么? 既然是专讲数据库索引的,斗胆提出几个问题。希望楼主能给予解答。。thanks |
|
返回顶楼 | |
发表时间:2011-08-30
为爱Debug 写道 看了前2节,觉得楼主还有很多关键的地方没有说出来,比如:
第一:何为聚簇索引和非聚簇索引(只看到优点没看到缺点,没有看到定义,另外和oracle 中的 位图 唯一 和一般索引定义有和区别。)。 第二:能为空的字段,不应该建索引(为什么,)。 第三:优化sql 的时候,即便该列上有索引,但是执行计划的时候依然是full sacn 要如何处理? 第四:一个表中最多能有多少索引,为什么? 既然是专讲数据库索引的,斗胆提出几个问题。希望楼主能给予解答。。thanks 回答下二,四。 同理,三也可以按照2这样来解释。 引字段不能为空,索引在你查询中设置Where时系统会自动选取合适的索引,但不能引用对索引字段进行函数操作,这样不会使用索引。通常你查询一个很多记录表中的某一条数据,使用索引字段与不使用索引字段查询速度会有很大差别. 当然索引一般控制在2到3个,一般使用多列组合的索引,这样在查询时定位会更快! 同时呢,由于索引也是占用库空间的,如果记录过多,同时也是影响效率的。 当然,每个表具体用多少个索引呢,也可以需要更具业务来设计,例如平安寿险根据oracle的建议,一般是控制在5个,最多不能超过5个! |
|
返回顶楼 | |
发表时间:2011-08-30
sqlserver 2005 上
tablename 假如是有主键的 一条普通的 select * from tablename 查看执行计划 也是聚集索引查询 很奇怪 |
|
返回顶楼 | |
发表时间:2011-08-31
分表详细讲一讲吧。看了等于没看。提供例子最好。讲理论谁都会。
|
|
返回顶楼 | |
发表时间:2011-08-31
学习了,正好需要这个
|
|
返回顶楼 | |
浏览 10757 次