当然不是,\x0d\x0a关于建立索引的几个准则:\x0d\x0a1、合理的建立索引能够加速数据读取效率,不合理的建立索引反而会拖慢数据库的响应速度。\x0d\x0a2、索引越多,更新数据的速度越慢。\x0d\x0a不要在选择的栏位上放置索引,这是无意义的。应该在条件选择的语句上合理的放置索引,比如where,orderby。\x0d\x0a例子:\x0d\x0aSELECTid,title,content,cat_idFROMarticleWHEREcat_id=1;\x0d\x0a上面这个语句,你在id/title/content上放置索引是毫无意义的,对这个语句没有任何优化作用。但是如果你在外键cat_id上放置一个索引,那作用就相当大了。
索引的级数越多,访问速度不一定越快。
举例子记忆:就好像是字典的目录结构一样,如果目录比你的字典内容还大,你觉得能好吗?换位思考,假如内容就10页,而目录用了500页,那么就相当于索引级数(500页)越多,但是访问速度肯定是很慢的,本来10页,我手翻都能翻完,结果索引的级数太多了,访问了半天才找到。总结:还要看数据量是否大。
关于索引的使用要注意几个事项 :
1 首先数据量小的表不需要建立索引,因为小的表即使建立索引也不会有大的用处,还会增加额外的索引开销
2 不经常引用的列不要建立索引,因为不常用,即使建立了索引也没有多大意义
3 经常频繁更新的列不要建立索引,因为肯定会影响插入或更新的效率
思考:表中建立了索引后,导入大量数据为什么会慢?或者说表中建立索引后,为什么更新数据会很慢?答:对已经建立了索引的表中插入数据时,插入一条数据就要对该记录【按索引排序】。因此,导入大量数据的时候速度会很慢,解决办法:在没有任何索引的情况下插入数据,然后再建立索引。而更新就无法避免了。就像3说的一样,经常更新的列就不要建立索引。
举例子:【们】字插入字典里,首先,【们】这个单词要找到【单人旁】,在找到【门】,然后找到页码,然后再插入或更新进去,这就叫【按索引排序】。
4 索引并不是一劳永逸的,用的时间长了需要进行整理或者重建
初学者在Oracle中使用索引,可以使用EM的建议(EM的Advisor Central中找SQL Access Advisor)
注意:有时候查询语句中的索引没有发挥作用,这又是为什么呢?
答:在很多情况下,虽然查询语句使用了索引,但是索引并没有发挥作用。例如:在WHERE条件的LIKE关键字匹配的字符串以”%“开头,这种情况下,索引是不会起到作用的;WHERE条件中使用OR关键字来连接多个查询条件,如果有一个条件没有使用索引,那么其他的索引也不会起作用;多列索引的第一个字段没有使用,那么这个多列索引也不会起作用。
解决办法:根据这些情况,必须对这些语句进行相应的优化。
备注:以上希望能帮助你理解。
当然不是,
关于建立索引的几个准则:
1、合理的建立索引能够加速数据读取效率,不合理的建立索引反而会拖慢数据库的响应速度。
2、索引越多,更新数据的速度越慢。
不要在选择的栏位上放置索引,这是无意义的。应该在条件选择的语句上合理的放置索引,比如where,order by。
例子:
SELECT id,title,content,cat_id FROM article WHERE cat_id = 1;
上面这个语句,你在id/title/content上放置索引是毫无意义的,对这个语句没有任何优化作用。但是如果你在外键cat_id上放置一个索引,那作用就相当大了。
索引本身也是需要更新的,
如果一个数据库表包含太多的索引,那么更新表花费的时间比不加索引花费的时间多,
建议在数据库表中需要添加索引的列上做索引
非也
1本200页的书前150也全是各类目录 内容50页 好还是差