1. 首页
  2. 数据库
  3. Oracle
  4. 索引问题-big.data.analytics.with.spark

索引问题-big.data.analytics.with.spark

上传者: 2024-07-07 03:16:02上传 PDF文件 31.31MB 热度 20次
16.8、索引问题1:针对一个表的查询语句能否会用到两个索引? 2:如果能用到,那么其实现原理是怎样的? 3:效率如何?其代价如何,比如额外开销等。 =====回答: 1.一个表的查询语句可以同时用到两个索引。如下图: 2.索引是以独立于表存在的一种数据库对象,它是对基表的一种排序(默认是B树索引就是二叉树的排序方式),比如: t表(x,y,z) ,在x,y,z上分别都建立了索引(index1,index2,index3),那在查询select * from t where x=1 and y=2;的时候,会分别用到index1,index2。原理是先到index1索引表中查到符合x=1条件的记录,然后到index2索引表中查到y=2条件的记录。 3.这样的查询效率,肯定是大于没有索引情况的全表扫描(table access full),但是有两个问题。问题一:建立索引将占用额外的数据库空间,更重要的是增删改操作的时候,索引的排序也必须改变,加大的维护的成本问题二:如果经常查询x=?和y=?,那推荐使用组合index(x,y),这种情况下组合索引的效率是远高于两个单独的索引的。同时在用组合索引的时候,大家一定要注意一个细节:建立组合索引index(x,y,z)的时候,那在查询条件中出现x,xyz,yzx都是可以用到该组合索引,但是y,yz,z是不能用到该索引的。关于这段话的原文如下: A leading portion of an index is a set of one or more columns that were specified first and consecutively in the list of columns in the CREATE INDEX statement that created the index. Consider this CREATE INDEX statement: CREATE INDEX comp_ind
下载地址
用户评论