一个关于HINT中指定索引查询的问题
2013-06-20 16:02
232 查看
有以下一段代码:
insert into TMP_USR_card_QTY(User_Id,qty)
SELECT
/*+ index(mt_cards idx_mt_card_crtdt) */
user_id,COUNT(0) qty
FROM MCARD.mt_cards c
where c.card_createtime between 1371571200 and 1371657600
group by user_id
执行计划如下:
而代码:
SELECT
/*+ index(mt_cards idx_mt_card_crtdt) */
user_id,COUNT(card_id) qty
FROM MCARD.mt_cards
where card_createtime >= 1371571200
group by user_id
的执行计划是:
经反复分析,原因是在HINT 中,使用了表别名,经修改代码如下后,得到了所要的结果。
insert into TMP_USR_card_QTY(User_Id,qty)
SELECT
/*+ index(c idx_mt_card_crtdt) */
user_id,COUNT(card_id) qty
FROM MCARD.mt_cards c
where c.card_createtime between 1371571200 and 1371657600
group by user_id
insert into TMP_USR_card_QTY(User_Id,qty)
SELECT
/*+ index(mt_cards idx_mt_card_crtdt) */
user_id,COUNT(0) qty
FROM MCARD.mt_cards c
where c.card_createtime between 1371571200 and 1371657600
group by user_id
执行计划如下:
而代码:
SELECT
/*+ index(mt_cards idx_mt_card_crtdt) */
user_id,COUNT(card_id) qty
FROM MCARD.mt_cards
where card_createtime >= 1371571200
group by user_id
的执行计划是:
经反复分析,原因是在HINT 中,使用了表别名,经修改代码如下后,得到了所要的结果。
insert into TMP_USR_card_QTY(User_Id,qty)
SELECT
/*+ index(c idx_mt_card_crtdt) */
user_id,COUNT(card_id) qty
FROM MCARD.mt_cards c
where c.card_createtime between 1371571200 and 1371657600
group by user_id
相关文章推荐
- 关于sql查询语句 的一个问题
- 关于一个统计个数的查询问题
- 一个关于MongoDB string字段索引的问题
- 关于SQL组合查询问题的一个思考
- 一个问题是有关于用js去替换htm指定标签之间的内容
- 使用oracle的index,指定hint定位到的一个小问题
- Oracle开发中,关于查询的一个问题
- ASP.Net下如何解决关于Access数据库“操作必须使用一个可更新的查询”问题
- 关于 addTarget 指定响应函数的一个小问题
- 一个Date类型的ibatis查询走不上索引的问题
- 遇到了一个关于for update用索引锁行的问题,悬而未解
- C# ACCESS 查询提示“至少一个参数没有被指定”问题
- 关于索引的一个诡异问题
- 关于数据库查询的一个问题
- 关于多列(复合)索引使用时的一个小问题
- 关于数据库查询的一个问题
- 纯属巧合,解决了一个困扰许久的问题,关于网卡设置时提示“系统找不到指定文件”。
- 遍历sd卡文件想查询一个指定文件时遇到的问题
- 关于模糊查询时的索引问题.(了解一下,对提高代码效率非常有好处)
- 关于《一个SQL语句查询问题(查询最小值)(急)》回复里面没有正确理想的答案!