我有一个表客户,其字段为customer_id,customer_fname,customer_lname,customer_address。
我在客户
上创建了索引cust_indexCREATE INDEX cust_index
ON customer (UPPER(customer_id));
我使用查询
select * from customer where customer_id=? and customer_fname=?
我想知道cust_index会在我的选择查询中使用吗?
答案 0 :(得分:2)
仅当where子句签名与索引签名完全匹配时,才使用基于函数的索引。如果您请求编译的索引体,您将看到它以大写形式编译,以便与编译的查询语句进行比较。要知道哪些索引使用了哪个查询,可以从提供适当sql_id的系统视图v$sql_plan_statistics_all
中进行选择。
答案 1 :(得分:1)
你必须谷歌搜索“基于oracle成本的优化器”并解释计划。
explain plan for your_query_here
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
这将显示用于查询的时髦。
或运行查询并
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR)
它将显示最后一个光标/查询的真实计划。
如果oracle已选择游标来访问解释计划中的数据,则显示"INDEX somthing SCAN index_name "