1、什么是索引

如果把数据库表看做一本书,索引就可以看做书的检索目录。目录中包含书中的大小标题(部分字段数据),并且有对应的数据表条目的页码(指针),可以快速的访问数据库表中对应行的所有字段内容

一个表中包含一个主索引和多个二级索引

主索引:是系统根据表关键字自动创建的,用户不需要创建。

    索引字段的组合,在表中只存在最多一条记录。如果未选择主索引中的字段,则会扫描全表或尝试使用合适的二级索引

二级索引:是用户自定义的,索引ID为三位字符,ID 0为主索引。内置数据类型STRING、RAWSRING和GEOM_EWKB与参考数据类型为FLTP的表字段,都不能作为索引字段

可以创建唯一或非唯一的辅助索引。

    唯一索引:要求在数据库表中不能包含索引字段中具有相同值的多行数据。

    非唯一索引:在访问数据库时,数据库的优化器检查是否存在合适的索引,所选索引依赖于平台,所以可以在ABAP字典中定义非唯一索引是否应用于哪些数据库系统

     所有数据库系统中的索引:索引是在每个数据库上创建的

     在选定的数据库系统中:可以使用选择列表或排除列表来定义数据库系统,每个列表最多有四个条目

     没有数据库索引:不应在任何数据库上创建索引。此设置,可以从数据库中删除现有的辅助索引。

2、索引的创建

事务代码:SE11

索引页签,创建索引

创建一个非唯一索引

3、索引的使用

  • 将索引字段放在where条件的最靠前位置,更能发挥作用
  • 使用索引时需要注意,索引只能由几个字段组成,通常不超过四个。
  • 为任何一个表创建的索引不应该超过五个,否则将导致过高的更新成本。
  • 某些数据库系统索引会忽略零值,所以在按零值进行选择时不能使用索引。如果有必要,可以在ABAP中使用%_hints指定数据库,以在选择辅助索引时调整数据库系统优化器
SELECT
matnr,
werks,
maktx
FROM yttest001
INTO TABLE @DATA(lt_test001)
WHERE matnr = '000000000000007777'
AND maktx = 'XX'
%_HINTS ORACLE 'index(YTLCCTEST001"Z1")'.
* %_HINTS HDB 'Z1'.
  • 优化器在以下SELECT语句中遇到OR时会停止工作
SELECT * FROM yttest001 WHERE ( matnr = '111' OR matnr = '222' ) AND maktx = 'XX'.
可以优化为:
SELECT * FROM yttest001 WHERE ( matnr = '111' AND maktx = 'XX' ) OR ( matnr = '222' AND maktx = 'XX' ).

定期更文,欢迎关注

关于ABAP索引的更多相关文章

  1. ABAP-Keyword Documentation

    转载:https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abenabap.htm ABAP - 关键字文档 本文档描述了ABAP语言 ...

  2. ABAP中SQL语句,指定索引(oracle)

    ①常用的两种方法: 1.指定使用全表扫描:%_HINTS ORACLE 'FULL(table_name)' 表示扫描整个表 2.指定索引:%_HINTS ORACLE 'INDEX("ta ...

  3. ABAP开发顾问必备:SAP ABAP开发技术总结

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. 优化ABAP性能(摘录)

    1.使用where语句不推荐Select * from zflight.Check : zflight-airln = ‘LF’ and zflight-fligh = ‘BW222’.Endsele ...

  5. ABAP 表格控制(Table Control)和步循环

    表格控制(Table Control)和步循环     1.两个标准Demo: SAPMTZ60,SAPMTZ61 2.简介 3.建立Table Control程序的基本流程 4.使用步循环 5.表格 ...

  6. ABAP程序系统字段中英文详解

    SY-SUBRC: 系统执行某指令后,表示执行成功与否的变量,’0’ 表示成功SY-DBLNT: 被处理过的记录的笔数 SY-UNAME: 当前使用者登入SAP的USERNAME;SY-DATUM: ...

  7. ABAP:SAP报表性能的优化

    大部分ABAPer都是从SAP报表及打印开始学起的,大家也都认为写个SAP报表程序是最简单不过的事了. 但是实际情况真的如此吗?写报表时除了保证数据的准确性,您可曾考虑过报表的性能问题吗? 由于报表程 ...

  8. ABAP 内表 详解

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  9. 字符串处理:ABAP中的正则表达式

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  10. ABAP基本数据类型、通用类型

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

随机推荐

  1. 排序:使数组唯一的最小增量 (3.22 leetcode每日打卡)

    给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1. 返回使 A 中的每个值都是唯一的最少操作次数. 示例 1: 输入:[1,2,2]输出:1解释:经过一次 move 操作, ...

  2. 多数元素 (3.12 leetcode每日打卡)

    给定一个大小为 n 的数组,找到其中的多数元素.多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在多数元素. 示例 1: 输入: [3,2,3] ...

  3. 终端必备大杀器----Fish

    目录 下载 安装 添加 权限 依赖库安装 cmake 预处理 编译 安装 配置fish 其他 下载 Github 地址-- fish-shell openSUSE 开源下载地址 openSUSE 开源 ...

  4. 解密Spring Cloud微服务调用:如何轻松获取请求目标方的IP和端口

    公众号「架构成长指南」,专注于生产实践.云原生.分布式系统.大数据技术分享. 目的 Spring Cloud 线上微服务实例都是2个起步,如果出问题后,在没有ELK等日志分析平台,如何确定调用到了目标 ...

  5. Netty源码学习6——netty编码解码器&粘包半包问题的解决

    系列文章目录和关于我 零丶引入 经过<Netty源码学习4--服务端是处理新连接的&netty的reactor模式和<Netty源码学习5--服务端是如何读取数据的>的学习, ...

  6. 后端程序员必会的前端知识-04:Vue3

    Vue 3 1. TypeScript 1) 动态类型的问题 前面我们讲过 js 属于动态类型语言,例如 function test(obj) { } obj 可能只是个字符串 test('hello ...

  7. 【scikit-learn基础】--『预处理』之 正则化

    数据的预处理是数据分析,或者机器学习训练前的重要步骤.通过数据预处理,可以 提高数据质量,处理数据的缺失值.异常值和重复值等问题,增加数据的准确性和可靠性 整合不同数据,数据的来源和结构可能多种多样, ...

  8. 当数字孪生系统接入CesiumJS,将为智慧城市项目带来怎样的改变?

    数字孪生系统接入CesiumJS的契机,正是智慧城市项目的需要.因为许多智慧城市项目中包含了大量地形.倾斜摄影.DOM.DEM等GIS数据,那么为了能够在数字孪生系统中导入这些GIS数据,同时让这些数 ...

  9. 启动android项目时报dx.jar错误的解决方案

    启动android项目时遇到如下错误: Failed to load E:\SDK\android-sdk-windows\build-tools\27.0.2\lib\dx.jar 原因: 自动使用 ...

  10. ElasticSearch之Clone index API

    使用已有的索引,复制得到一个索引. 关闭testindex_001的写入操作,命令样例如下: curl -X PUT "https://localhost:9200/testindex_00 ...