文章
· 四月 15, 2021 阅读大约需 10 分钟
第二章 定义和构建索引(三)

#

第二章 定义和构建索引(三)

# 位图索引

位图索引是一种特殊类型的索引,它使用一系列位串来表示与给定索引数据值相对应的一组ID值。

位图索引具有以下重要功能:

  • 位图是高度压缩的:位图索引可以比标准索引小得多。这大大减少了磁盘和缓存的使用量。
  • 位图操作针对事务处理进行了优化:与使用标准索引相比,可以在表中使用位图索引,而不会降低性能。
  • 位图上的逻辑操作(countingANDOR)经过优化以获得高性能。
  • SQL引擎包括许多可以利用位图索引的特殊优化。

位图索引的创建取决于表的唯一标识字段的性质:

0 0
0 63
InterSystems 开发者社区汇聚了 17,533 位出色的开发者
InterSystems IRIS 程序员可以在这里学习、分享、了解最新动态、成长,以及收获快乐!
文章
· 四月 24, 2021 阅读大约需 12 分钟
第五章 优化查询性能(三)

第五章 优化查询性能(三)

查询执行计划

可以使用解释或显示计划工具来显示SELECTDECLAREUPDATEDELETETRUNCATE TABLE和一些INSERT操作的执行计划。这些操作统称为查询操作,因为它们使用SELECT查询作为其执行的一部分。InterSystems IRIS在准备查询操作时生成执行计划;不必实际执行查询来生成执行计划。

默认情况下,这些工具显示InterSystems IRIS认为的最佳查询计划。对于大多数查询,有多个可能的查询计划。除了InterSystems IRIS认为最佳的查询计划外,还可以生成和显示备用查询执行计划。

0 0
0 80
文章
· 四月 28, 2021 阅读大约需 11 分钟
第八章 解释SQL查询计划(一)

第八章 解释SQL查询计划(一)

SQL语句

这个SQL语句列表为每个表提供了SQL查询和其他操作的记录,包括插入、更新和删除。
这些SQL语句链接到一个查询计划,该链接提供冻结该查询计划的选项。

系统为每个SQL DML操作创建一条SQL语句。
这提供了一个按表、视图或过程名称列出的SQL操作列表。
如果更改表定义,可以使用此SQL Statements列表来确定每个SQL操作的查询计划是否会受到此DDL更改的影响,以及/或是否需要修改某个SQL操作。
然后,可以:

  • 确定每个SQL操作使用哪个查询计划。
    可以决定使用反映对表定义所做更改的修改后的查询计划。
    或者可以冻结当前查询计划,保留在更改表定义之前生成的查询计划。
  • 根据对表定义所做的更改,确定是否对对该表执行SQL操作的例程进行代码更改。

注意:SQL语句是一个SQL例程列表,它们可能会受到表定义更改的影响。
它不应该用作表定义或表数据更改的历史记录。

创建SQL语句操作

下面的SQL操作会创建相应的SQL语句:

0 0
0 83

亲爱的社区开发者们,大家好!

欢迎积极参与新一轮InterSystems开发者竞赛!

🏆 InterSystems 编程大赛:FHIR 加速器 🏆

提交在AWS上使用InterSystems的IRIS FHIR-as-a-service的应用程序,或帮助使用InterSystems IRIS FHIR加速器开发的解决方案。点击这篇文章,了解如何在AWS上申请应用InterSystems IRIS FHIR 加速器服务 (FHIRaaS) 。

    时间:2021年5月10日-6月6日

    奖金总额: $8,750

    👉 点击登录活动页面 👈

    0 0
    0 118
    文章
    · 五月 20, 2021 阅读大约需 7 分钟
    互操作消息统一管理系列:SearchTable加速检索

    在上一篇文章《互操作消息统一管理系列:Message Bank》中,我们了解到在Message Bank中,消息均以半结构化(XML)或非结构化(Stream)的形式保存,因此无法与客户端的结构化消息一样,直接支持基于索引的检索。为此,需要在Message Bank中定义Search Table以支持查询。关于Search Table的定义和作用,请查阅https://docs.intersystems.com/healthconnectlatest/csp/docbook/DocBook.UI...

    0 0
    0 143
    文章
    · 五月 31, 2021 阅读大约需 4 分钟
    第十二章 IBM WebSphere MQ检索邮件

    第十二章 IBM WebSphere MQ检索邮件

    检索邮件

    要检索邮件,请执行以下操作:

    1. 按照“创建连接对象”中的说明创建连接对象。在这种情况下,请创建%Net.MQRecv的实例。Connection对象有一个消息队列,可以从中检索消息。
    2. 根据需要调用以下方法:

    - %Get()-通过引用返回字符串消息作为第一个参数。
    - %GetStream()-给定初始化的文件字符流,此方法从队列中检索消息,并将其放入与该流关联的文件中。请注意,必须设置流的Filename属性才能对其进行初始化。不支持二进制流。

    0 0
    0 105
    文章
    · 六月 23, 2021 阅读大约需 15 分钟
    最低限度的监控和警报解决方案

    InterSystems 数据平台包括了用于系统监视和警报的实用程序及工具,但对于不熟悉构建于 InterSystems 数据平台(又名 Caché)的解决方案的系统管理员来说,他们需要知道从何处下手以及需要配置什么。

    本指南以在线文档和开发者社区帖子为参考,介绍了实现最低限度的监视和警报解决方案的途径,以及如何启用和配置以下组件:

    0 0
    0 176
    文章
    · 六月 12, 2021 阅读大约需 6 分钟
    第五章 生成XML元素

    第五章 生成XML元素

    生成XML元素

    如果使用RootElement()启动文档的根元素,则负责生成该根元素内的每个元素。有三个选择:

    将对象生成为元素

    可以从InterSystems IRIS对象生成输出作为元素。在本例中,使用object()方法,该方法写入支持XML的对象。输出包括该对象中包含的所有对象引用。可以指定此元素的名称,也可以使用在对象中定义的默认值。

    只能在RootElement()EndRootElement()方法之间使用object()方法。

    此示例为给定启用XML的类的所有已保存实例生成输出:

    0 0
    0 87
    文章
    · 七月 14, 2021 阅读大约需 5 分钟
    第三章 处理文件和目录名

    第三章 处理文件和目录名

    %Library.File类提供了几个可用于处理文件名和目录名的类方法。在大多数情况下,文件和目录不需要存在即可使用这些方法。

    获取文件名和目录名

    %Library.File类提供可用于获取部分文件名和目录名的类方法。

    在给定完整路径名的情况下,使用GetDirectory()GetFilename()分别获取目录和短文件名。对于此方法,不允许使用部分目录名。

    DHC-APP>set filename = "e:\temp\config.txt"
    
    DHC-APP>write ##class(%File).GetDirectory(filename)
    E:\temp\
    DHC-APP>write ##class(%File).GetFilename(filename)
    config.txt
    

    在给定文件名的情况下,使用CanonicalFilename()从根目录获取完整路径:

    0 0
    0 67
    文章
    · 七月 26, 2021 阅读大约需 3 分钟
    类关键字NoExtent,OdbcType,Owner,ProcedureBlock

    # <center> 第二十五章 类关键字 - NoExtent

    指定是否阻止编译器为此类生成继承类(如果不这样做的话)。

    # 用法

    要防止编译器为此类生成继承类,请使用以下语法:

    ```
    Class MyApp.MyClass [ NoExtent ] { //class members }
    ```

    否则,省略此关键字或将单词`Not`放在关键字的前面。

    # 详解

    如果该关键字为真,则该类没有 `extent`。不能创建此类的实例。通常,这样的类会扩展或覆盖从`%Library.Persistent`继承的标准持久接口。

    # 对子类的影响

    此关键字不是继承的。

    # 默认

    如果省略此关键字,类可以有一个`extent`。

    # <center> 第二十六章 类关键字 - OdbcType

    指定通过`ODBC`或`JDBC`公开此数据类型时使用的类型。每个数据类型类都必须指定一个`ODBC`类型。此关键字仅适用于数据类型类。

    # 用法

    0 0
    0 82
    文章
    · 八月 3, 2021 阅读大约需 3 分钟
    索引关键字Unique,Abstract,ClientName,CodeMode

    第五十七章 索引关键字 - Unique

    指定索引是否应强制唯一性。

    用法

    要指定IRIS应强制此索引所基于的属性具有唯一性,请使用以下语法:

    Index name On property_expression_list [ Unique ];
    

    否则,请省略此关键字或将该词放在该关键字之前。

    详情

    如果存在UNIQUE关键字,则表示这是唯一索引。

    由唯一索引索引的属性(或多个属性)被约束为在定义索引的类(表)的范围(所有对象的集合)内具有唯一值(即,没有两个实例可以具有相同的排序值)。

    唯一索引不能也是位图索引。

    示例

    Index SSNIdx On SSN [ Unique ] ;
    

    默认

    如果省略此关键字,IRIS不会强制此索引所基于的属性具有唯一性。

    第五十八章 方法关键字 - Abstract

    指定这是否是抽象方法。

    0 0
    0 64

    1 磁盘空间不足的常见情形
    1)Journal所在磁盘空间不足。造成这种情况的原因有多种,比如,Mirror中备机未处于宕机状态,因此主机保留了Journal文件。
    2)数据库所在磁盘空间不足。比如,集成平台上Ensemble/Health Connect/IRIS for Health的消息从未清除过,导致消息数据库DAT文件不断增大,直至将磁盘空间用尽。

    我们可以看到以上两种情形下,Mirror都帮不上忙,也就是说一旦问题出现,主机和备机都没有办法立即承担起业务系统的运行,
    第1)种,备机可能在故障出现前就已经宕机很长一段时间而没被发现,备机的数据很可能已经与主机严重不一致。实际上,主机之所以保留了大量的journal文件没有删除,就是为了让备机同步数据时使用。
    第2)种,虽然配置了Mirror,但是消息主库正常情况下都是镜像库,在一个健康的Mirror中,备机和主机的镜像库数据保持同步,镜像库大小应当是相同的,假设主备机的硬件配置相同(这也是我们推荐的方式)那么磁盘空间不足在备机上同样存在。

    5 0
    0 184
    文章
    · 九月 22, 2021 阅读大约需 3 分钟
    第二十三章 SQL命令 CREATE USER

    第二十三章 SQL命令 CREATE USER

    创建用户帐户。

    大纲

    CREATE USER user-name IDENTIFY BY password
    
    CREATE USER user-name IDENTIFIED BY password
    

    参数

    • user-name - 要创建的用户的名称。名称是最多128个字符的标识符。它可以包含Unicode字母。用户名不区分大小写。
    • password - 此用户的密码。密码必须至少为3个字符,并且不能超过32个字符。密码区分大小写。密码可以包含Unicode字符。

    描述

    CREATE USER命令使用指定的密码创建用户帐户。

    0 0
    0 71
    文章
    · 九月 29, 2021 阅读大约需 9 分钟
    第二十九章 SQL命令 DISTINCT

    第二十九章 SQL命令 DISTINCT

    指定仅返回不同值的SELECT子句。

    大纲

    SELECT [DISTINCT [BY (item {,item2})] ]  |  [ALL]
      select-item {,select-item2}
    

    参数

    • DISTINCT - 可选-返回组合选择项值唯一的行。
    • DISTINCT BY (item {,item2}) - 可选-返回按(项)值唯一的行的选择项值。
    • ALL - 可选-返回结果集中的所有行。默认设置。

    描述

    可选DISTINCT子句出现在SELECT关键字之后、可选TOP子句和第一个SELECT-ITEM之前。

    0 0
    0 383
    文章
    · 十月 10, 2021 阅读大约需 3 分钟
    第四十一章 SQL命令 DROP VIEW

    第四十一章 SQL命令 DROP VIEW

    删除视图

    大纲

    DROP VIEW view-name [CASCADE | RESTRICT]
    

    参数

    • view-name 要删除的视图的名称。
      视图名可以是限定的(schema.viewname),也可以是非限定的(viewname)。
      非限定视图名接受默认模式名。
    • CASCADE RESTRICT - 可选-指定CASCADE关键字以删除引用view-name的任何其他视图。如果有另一个视图引用view-name,则指定RESTRITE将发出SQLCODE-321错误。默认值为限制。

    描述

    DROP VIEW命令删除视图,但不删除基础表或数据。

    0 0
    0 81
    文章
    · 十月 19, 2021 阅读大约需 5 分钟
    第五十章 SQL命令 HAVING(一)

    第五十章 SQL命令 HAVING(一)

    对一组数据值指定一个或多个限制性条件的SELECT子句。

    大纲

    SELECT field
    FROM table
    GROUP BY field
    HAVING condition-expression
    
    SELECT aggregatefunc(field %AFTERHAVING)
    FROM table
    [GROUP BY field]
    HAVING condition-expression
    

    参数

    • condition-expression - 由一个或多个布尔谓词组成的表达式,用于控制要检索哪些数据值。

    描述

    可选的HAVING子句出现在FROM子句、可选的WHEREGROUP BY子句之后,可选的ORDER BY子句之前。

    0 0
    0 49
    文章
    · 十月 29, 2021 阅读大约需 5 分钟
    第六十章 SQL命令 JOIN(二)

    第六十章 SQL命令 JOIN(二)

    单向外部联接

    IRIS支持单向外部联接:左外部联接和右外部联接。

    使用标准的“inner”联接时,当一个表的行链接到第二个表的行时,第一个表中找不到第二个表中对应行的行将从输出表中排除。

    使用单向外联接时,即使第二个表中没有匹配项,第一个表中的所有行也会包括在输出表中。使用单向外连接,第一个表会从第二个表中取出相关信息,但不会因为第二个表中缺少匹配项而牺牲自己的行。

    例如,如果查询首先列出Table1并创建一个左外部联接,那么它应该能够看到Table1中的所有行,即使它们在Table2中没有对应的记录。

    0 0
    0 39
    文章
    · 十一月 2, 2021 阅读大约需 16 分钟
    IRIS 2021 技术文档 First Look 28 - InterSystems 公钥基础设施 (PKI)

    本文档介绍了 InterSystems 公钥基础设施(PKI),它可以在开发组织的安全策略中发挥重要作用。它提供有关公钥加密、证书颁发机构和 PKI 的信息。然后介绍一些与使用 InterSystems PKI 相关的初始任务。完成本指南后,您将有能力创建一个证书颁发机构 (CA),然后向 CA 客户端请求并接收证书。
    虽然 InterSystems PKI 不用于生产系统,但您可以用它来熟悉 PKI 工具和安全基础设施。作为设计和探索过程的一部分,这对于创建全面的安全方法特别有帮助。
    本指南使用 InterSystems IRIS®数据平台的默认设置,这使您能够熟悉 PKI 的基本原理,而不必处理其他在执行实现时很重要的细节问题。有关数据库加密的完整文档,请参见 The InterSystems Public Key Infrastructure(《 InterSystems 公钥基础设施》)。
    要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)。

    0 0
    0 133
    文章
    · 十一月 28, 2021 阅读大约需 2 分钟
    第九十章 SQL命令 WHERE CURRENT OF

    第九十章 SQL命令 WHERE CURRENT OF

    使用游标指定当前行的UPDATE/DELETE子句。

    大纲

    WHERE CURRENT OF cursor
    

    参数

    • cursor - 指定在光标的当前位置执行操作,光标是指向表的光标。

    描述

    WHERE CURRENT OF子句可用于基于游标的嵌入式SQL UPDATEDELETE语句,以指定位于要更新或删除记录上的游标。
    例如:

       &sql(DELETE FROM Sample.Employees WHERE CURRENT OF EmployeeCursor)
    

    删除最后一个FETCH命令从“EmployeeCursor”游标获得的行。

    0 0
    0 43
    文章
    · 十二月 19, 2021 阅读大约需 5 分钟
    第二十章 SQL谓词 %STARTSWITH(二)

    第二十章 SQL谓词 %STARTSWITH(二)

    首尾空格

    在大多数情况下,%STARTSWITH将前导空格视为与任何其他字符相同的字符。
    例如,%STARTSWITH ' B'可用于选择只有一个前导空白后跟字母B的字段值。然而,只包含空白的子字符串不能选择前导空白;
    它选择非空值。

    尾随空格的%STARTSWITH行为取决于数据类型和排序规则类型。
    %STARTSWITH忽略定义为SQLUPPER的字符串子串的尾随空格。
    %STARTSWITH不会忽略数字、日期或列表子字符串中的尾随空格。

    在下面的示例中,%STARTSWITH将结果集限制为以“M”开头的名称。
    因为Name是一个SQLUPPER字符串数据类型,子字符串的末尾空格将被忽略:

    0 0
    0 29