Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 哪种访问方法适用于具有两个或多个B树索引的表_Sql_Oracle_Oracle11g - Fatal编程技术网

Sql 哪种访问方法适用于具有两个或多个B树索引的表

Sql 哪种访问方法适用于具有两个或多个B树索引的表,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,考虑下表所示的客户表。此表包含大约750000行,并且在其主键上自动创建了唯一的B树索引。此外,假设DBA已在其他_名称+姓氏上创建了B树索引 客户表 客户识别码 *姓 *其他名称 *用户名 *地址 问题 用户执行以下表单的查询: 选择来自客户 其中姓氏=‘史密斯’; -确定Oracle11g在这种情况下能够使用的所有物理数据访问方法 -确定Oracle11g最有可能使用哪种访问方法; 及 -解释为什么与其他可用访问方法相比,此访问方法更有可能被使用 谢谢你的帮助 到目前为止你得到了什么

考虑下表所示的客户表。此表包含大约750000行,并且在其主键上自动创建了唯一的B树索引。此外,假设DBA已在其他_名称+姓氏上创建了B树索引

客户表 客户识别码

*姓

*其他名称

*用户名

*地址

问题 用户执行以下表单的查询: 选择来自客户

其中姓氏=‘史密斯’;

-确定Oracle11g在这种情况下能够使用的所有物理数据访问方法

-确定Oracle11g最有可能使用哪种访问方法; 及

-解释为什么与其他可用访问方法相比,此访问方法更有可能被使用


谢谢你的帮助

到目前为止你得到了什么?您自己做了哪些努力来回答这个问题?@Ollie在这个查询中,哈希方法不能使用,因为哈希只在主键(即客户ID)上设置。可以使用顺序方法,但它会很慢,因为它扫描整个表,即使它只要求使用“Smith”作为姓氏。这意味着表中的大多数行都被过滤掉,留下姓“Smith”的人。这说明该列具有很高的选择性,使用该列中的B树索引是一个很好的选择,如果我们使用索引方法,这更有意义。不确定我的答案是否正确。我对复合键索引有点困惑,在姓氏上使用B树索引没有好处,因为查询将使用最左边的索引。在这种情况下,它将使用PK,这反过来对第二个综合指数没有好处……正确的答案是运行解释计划并找出答案!您和您的教练的里程数可能会有所不同。祝你好运。