首页 > 数据库 >【INDEX_SS】使用HINT使SQL用索引跳跃扫描(Index Skip Scan)方式快速获取数据

【INDEX_SS】使用HINT使SQL用索引跳跃扫描(Index Skip Scan)方式快速获取数据

时间:2024-04-02 17:15:07浏览次数:244  
标签:INDEX 00 HINT 获取数据 索引 sec 66 SQL ora10g

索引跳跃扫描(Index Skip Scan)可以使用到复合索引的非前缀索引列,达到改善性能的作用,前提是全表扫面的代价高于索引跳跃式扫描的代价。这里给出使用HINT方法使SQL走索引跳跃扫描的方法。

1.初始化环境
1)创建表T
sec@ora10g> create table t(x number,y number);

Table created.

2)初始化1000条数据
sec@ora10g> insert into t select rownum,66 from dual connect by rownum<=1000;

1000 rows created.

sec@ora10g> commit;

Commit complete.

sec@ora10g> select * from t ;

         X          Y
---------- ----------
         1         66
         2         66
         3         66
……省略部分输出……
       998         66
       999         66
      1000         66

1000 rows selected.

3)在表T上创建复合索引
sec@ora10g> create index t_i on t(x,y);

Index created.

4)对表进行分析
sec@ora10g> analyze table t compute statistics;

Table analyzed.

2.使用HINT方法使SQL走索引跳跃扫描
sec@ora10g> explain plan for select /*+ index_ss(t t_i) */ * from t where y=66;

Explained.

sec@ora10g> @?/rdbms/admin/utlxpls.sql

PLAN_TABLE_OUTPUT
-----------------------------------------------------------------------------
Plan hash value: 597150364

-------------------------------------------------------------------------
| Id  | Operation        | Name | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------
|   0 | SELECT STATEMENT |      |  1000 |  5000 |  1002   (1)| 00:00:13 |
|*  1 |  INDEX SKIP SCAN | T_I  |  1000 |  5000 |  1002   (1)| 00:00:13 |
-------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("Y"=66)
       filter("Y"=66)

14 rows selected.

3.不使用HINT查看SQL语句的执行计划
sec@ora10g> explain plan for select * from t where y=66;

Explained.

sec@ora10g> @?/rdbms/admin/utlxpls.sql

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 3046511974

-----------------------------------------------------------------------------
| Id  | Operation            | Name | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |      |  1000 |  5000 |     2   (0)| 00:00:01 |
|*  1 |  INDEX FAST FULL SCAN| T_I  |  1000 |  5000 |     2   (0)| 00:00:01 |
-----------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("Y"=66)

13 rows selected.

此时SQL使用的是INDEX FAST FULL SCAN方式来获得的数据。

4.小结
  了解并构造每一种SQL语句的执行计划有助于我们深入了解SQL语句的执行方法,进而选择最有效的方法检索和处理数据。

标签:INDEX,00,HINT,获取数据,索引,sec,66,SQL,ora10g
From: https://www.cnblogs.com/ivenlin/p/18111038

相关文章

  • index
    Markdown&MDXRspresssupportsnotonlyMarkdownbutalsoMDX,apowerfulwaytodevelopcontent.MarkdownMDXisasupersetofMarkdown,whichmeansyoucanwriteMarkdownfilesasusual.Forexample:#HelloWorldUseComponentWhenyouwanttous......
  • 1.获取数据
    importpandasaspdimportmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']importtushareastsimportosdefget_data(code,start='1990-1-1',end='2021-1-1'):df=ts.get_k_data(code,autype=......
  • KingbaseES Reindex concurrently过程
    前言KES中我们经常遇到表膨胀情况,然而索引也会膨胀,随着业务DML语句的增长,稍不留神索引就会膨胀的很严重,膨胀后的索引只有VACUUMFULL才会真正释放磁盘空间,对于新构建的索引往往比更新的旧索引提供更好的访问性能。所以,我们需要重建膨胀的索引。REINDEX命令需要ACCESSEXCLUSIVE......
  • KingbaseES Create Index include 介绍
    在数据库性能优化的世界中,索引始终扮演着至关重要的角色。KingbaseES创建索引语法中的INCLUDE关键字为索引创建提供了额外的灵活性,允许在B-Tree索引中包含额外的非键(Non-Key)列。这些列虽然不参与索引的排序或搜索过程,但可用于提高某些查询的效率,尤其是在执行索引覆盖扫描(Index-......
  • 【Bitmap Index】B-Tree索引与Bitmap位图索引的锁代价比较研究
    通过以下实验,来验证Bitmap位图索引较之普通的B-Tree索引锁的“高昂代价”。位图索引会带来“位图段级锁”,实际使用过程一定要充分了解不同索引带来的锁代价情况。1.为比较区别,创建两种索引类型的测试表1)在表t_bitmap上创建位图索引SEC@ora11g>createtablet_bitmap(idnumber(1......
  • 【wpf】ListBoxItemIndexConverter转换器listbox序号自更新
    publicclassListBoxItemIndexConverter:IMultiValueConverter{publicobjectConvert(object[]values,TypetargetType,objectparameter,CultureInfoculture){stringindexPrefix=null;if(parameter!=null&&parameter......
  • npm ERR! path /Users/apple/.npm/_cacache/index-v5/11/77/cf18d9ab54d565b57fb3
    在使用npm时,有时候您可能会遇到类似以下错误的权限问题:npmERR!path/Users/apple/.npm/_cacache/index-v5/11/77/cf18d9ab54d565b57fb3npmERR!codeEACCESnpmERR!errno-13npmERR!syscallopennpmERR!Error:EACCES:permissiondenied,open'/Users/apple/......
  • 【SPIE 出版|EI, Scopus Index】第六届图像、视频处理和人工智能国际会议(IVPAI 2024)
    第六届图像、视频处理和人工智能国际会议(IVPAI2024)日期:2024年7月21-23日地点:马来西亚,吉隆坡官网:www.ivpai.org会议背景:IVPAI在过去的五年(2018-2021&2023)里取得了巨大的成功。累计吸引了超过7000份申请和2000名与会者,展现了其在全球范围内的广泛影响力和学术价值。......
  • TorchV的RAG实践分享(三):解析llama_index的数据存储结构和召回策略过程
    1.前言LlamaIndex是一个基于LLM的数据处理框架,在RAG领域非常流行,简单的几行代码就能实现本地的文件的对话功能,对开发者提供了极致的封装,开箱即用。本文以官方提供的最简单的代理示例为例,分析LlamaIndex在数据解析、向量Embedding、数据存储及召回的整个源码过程。通过学习框架......
  • Pandas操作MultiIndex合并行列的Excel,写入读取以及写入多余行及Index列处理,插入行,修改
    Pandas操作MultiIndex合并行列的excel,写入读取以及写入多余行及Index列处理1.效果图及问题2.源码参考今天是谁写Pandas的复合索引MultiIndex,写的糊糊涂涂,晕晕乎乎。是我呀…记录下,现在终于灵台清明了。明天在记录下直接用openpyxl生成合并单元格,事半功倍。跟......