文章
· 十月 8, 2021 阅读大约需 4 分钟
第三十九章 SQL命令 DROP TRIGGER

第三十九章 SQL命令 DROP TRIGGER

删除触发器

大纲

DROP TRIGGER name [ FROM table ]

参数

  • name - 要删除的触发器的名称。触发器名称可以是限定的,也可以是非限定的;如果限定,则其架构名称必须与表的架构名称匹配。
  • FROM table - 可选-要从中删除触发器的表。如果指定了FROM子句,则只在表中搜索命名触发器。如果未指定FROM子句,则在NAME中指定的整个架构中搜索命名触发器。

描述

DROP TRIGGER命令删除触发器。如果要修改现有触发器,则必须先调用DROP TRIGGER删除旧版本的触发器,然后再调用CREATE TRIGGER

注:DROP TABLE删除与该表关联的所有触发器。

0 0
0 112
文章
· 十月 23, 2021 阅读大约需 12 分钟
第五十四章 SQL命令 INSERT(三)

第五十四章 SQL命令 INSERT(三)

SQLCODE错误

默认情况下,INSERT是要么全有要么全无的事件:要么完全插入行,要么根本不插入行。 IRIS返回一个状态变量SQLCODE,指示插入是成功还是失败。要将行插入到表中,插入操作必须满足所有表、字段名和字段值要求,如下所示。

0 0
0 191
文章
· 十一月 8, 2021 阅读大约需 9 分钟
第七十章 SQL命令 SELECT(二)

第七十章 SQL命令 SELECT(二)

select-item

这是所有SELECT语句的必选元素。
通常,选择项指的是FROM子句中指定的表中的一个字段。
选择项由下列一个或多个项组成,多个项之间用逗号分隔:

  • 列名(字段名),带或不带表名别名:
SELECT Name,Age FROM Sample.Person

字段名不区分大小写。
但是,结果集中与字段关联的标签使用表定义中指定的SqlFieldName的字母大小写,而不是选择项中指定的字母大小写。

0 0
0 121
文章
· 十一月 23, 2021 阅读大约需 3 分钟
第八十五章 SQL命令 UPDATE(四)

第八十五章 SQL命令 UPDATE(四)

示例

本节中的示例更新SQLUser.MyStudents表。
下面的示例创建SQLUser.MyStudents表,并用数据填充它。
因为这个示例的重复执行会积累具有重复数据的记录,所以它使用TRUNCATE TABLE在调用INSERT之前删除旧数据。
在调用UPDATE示例之前执行这个示例:

0 0
0 72
文章
· 一月 30, 2022 阅读大约需 1 分钟
第三十九章 SQL函数 DATABASE

第三十九章 SQL函数 DATABASE

返回数据库名称限定符的标量字符串函数。

大纲

{fn DATABASE()}

描述

DATABASE返回与连接句柄对应的数据库名称的当前限定符。
在IRIS中,DATABASE总是返回空字符串(")。

0 0
0 111
文章
· 二月 13, 2022 阅读大约需 3 分钟
第五十三章 SQL函数 %EXACT

第五十三章 SQL函数 %EXACT

排序规则函数,可将字符转换为精确的排序规则格式。

大纲

%EXACT(expression)

%EXACT expression

参数

  • expression - 字符串表达式,可以是列名、字符串文字、数字或另一个函数的结果,其中底层数据类型可以表示为任何字符类型(如CHARVARCHAR2)。

描述

%Exact返回精确排序规则序列中的表达式。此归类序列按如下方式对值进行排序:

0 0
0 170
文章
· 二月 27, 2022 阅读大约需 2 分钟
第六十七章 SQL函数 ISNUMERIC

第六十七章 SQL函数 ISNUMERIC

测试有效数字的数值函数。

大纲

ISNUMERIC(check-expression)

参数

  • check-expression - 要计算的表达式。

ISNUMERIC返回SMALLINT数据类型。

0 0
0 92
文章
· 四月 1, 2022 阅读大约需 4 分钟
第九十九章 SQL函数 NOW

第九十九章 SQL函数 NOW

返回当前本地日期和时间的日期/时间函数。

大纲

NOW()

{fn NOW}
{fn NOW()}

描述

NOW 不接受任何参数。参数括号对于 ODBC 标量语法是可选的;它们对于 SQL 标准函数语法是必需的。

NOW 以时间戳的形式返回该时区的当前本地日期和时间;它会根据本地时间变体进行调整,例如夏令时。

NOW 可以返回 %TimeStamp 数据类型格式 (yyyy-mm-dd hh:mm:ss.ffff) 或 %PosixTime 数据类型格式(编码的 64 位有符号整数)的时间戳。以下规则确定返回的时间戳格式:

0 0
0 77
文章
· 四月 17, 2022 阅读大约需 1 分钟
第115章 SQL函数 REPEAT

第115章 SQL函数 REPEAT

将字符串重复指定次数的字符串函数。

大纲

REPEAT(expression,repeat-count)

{fn REPEAT(expression,repeat-count)}

参数

  • expression - 要重复的字符串表达式。
  • repeat-count - 重复的次数,以整数表示。

描述

REPEAT 返回一串重复计数的表达式实例,连接在一起。

如果表达式为 NULL,则 REPEAT 返回 NULL。如果 expression 是空字符串,则 REPEAT 返回一个空字符串。

0 0
0 110
文章
· 四月 29, 2022 阅读大约需 1 分钟
第127章 SQL函数 SPACE

第127章 SQL函数 SPACE

返回一串空格的字符串函数。

大纲

SPACE(count)

{fn SPACE(count)}

参数

  • count - 整数表达式,指定要返回的空格数。

描述

SPACE 返回一个空格字符串 count 个空格长。如果 count 是数字字符串、十进制数或混合数字字符串, 会将其解析为其整数部分。如果 count 是负数或非数字字符串将其解析为 0

要从字符串中删除空格,请使用 LTRIM(前导空格)或 RTRIM(尾随空格)。

0 0
0 56
文章
· 五月 30, 2022 阅读大约需 4 分钟
第157章 SQL函数 WEEK

第157章 SQL函数 WEEK

一个日期函数,它将一年中的第几周作为日期表达式的整数返回。

大纲

{fn WEEK(date-expression)}

参数

  • date-expression - 一个表达式,它是列的名称、另一个标量函数的结果,或者是日期或时间戳文字。

描述

WEEK 接受一个日期表达式,并返回该日期从年初开始的周数。

0 0
0 128
文章
· 六月 17, 2022 阅读大约需 7 分钟
第三章 锁定和并发控制(三)

第三章 锁定和并发控制(三)

升级锁

使用升级锁来管理大量锁。当锁定数组的节点时,它们是相关的,特别是当将多个节点锁定在同一下标级别时。

当给定进程在同一数组中的给定下标级别创建了超过特定数量(默认为 1000)的升级锁时, 将删除所有单独的锁名称并用新锁替换它们。新锁位于父级,这意味着数组的整个分支被隐式锁定。示例(如下所示)演示了这一点。

应用程序应在合适的情况下尽快释放特定子节点的锁(与非升级锁完全相同)。当释放锁时, 会减少相应的锁计数。当的应用程序移除足够多的锁时,会移除父节点上的锁。第二小节显示了一个示例。

锁升级示例

假设有 1000^MyGlobal("sales","EU",salesdate) 形式的锁,其中 salesdate 表示日期。锁表可能如下所示:

image

0 0
0 97
文章
· 七月 4, 2022 阅读大约需 7 分钟
第十八章 使用工作队列管理器(一)

第十八章 使用工作队列管理器(一)

工作队列管理器是的一项功能,使能够通过以编程方式将工作分配给多个并发进程来提高性能。在引入工作队列管理器之前,可能已经使用 JOB 命令在应用程序中启动多个进程并使用自定义代码管理这些进程(以及任何导致的故障)。工作队列管理器提供了一个高效且直接的 API,使能够卸载流程管理。

代码在多个地方内部使用工作队列管理器。可以将它用于自己的需求,如以下部分中的高级描述。

背景

计算机硬件开发的最新创新趋向于高性能、多处理器或多核架构。与此同时,内存和网络设备的速度也只是慢慢地提高了。 开发了工作队列管理器以响应这些趋势并根据以下原则:

0 0
0 99
文章
· 八月 7, 2022 阅读大约需 2 分钟
最佳实践之改善日期范围查询的SQL性能

根据日期范围查询的SQL性能让你失望? 我有一个比较特别的技巧,可能会帮助你解决这个问题! (SQL开发人员讨厌这个!)*

如果你有一个类,在添加数据时记录时间戳,那么这些数据将与你的IDKEY值保持顺序--也就是说,当且仅当ID1<ID2时,表内所有ID和时间戳值的TimeStamp1<TimeStamp2--那么你可以利用这一知识来提高对时间戳范围的查询性能。 考虑一下下面这个表:

Class User.TSOrder extends %Persistent 
{ 

Property TS as %TimeStamp;

Property Data as %String (MAXLEN=100, MINLEN=200);

Index TSIdx on TS;

Index Extent [type=bitmap, extent];

}

用过去30天内的30,000,000条随机行来填充,每天将得到1,000,000条行。 现在,如果我们想查询某一天的信息,你可以这样写:

0 0
0 490
文章
· 七月 31, 2023 阅读大约需 2 分钟
ChatGPT 与 InterSystems FHIR SQL 数据库构建器

FHIR® SQL Builder或 Builder 是 InterSystems IRIS 医疗版数据平台 的一个组件。它是一种复杂的投射工具,用于将 InterSystems IRIS 医疗版数据平台FHIR 存储库中的数据创建为自定义的 SQL 模式,而无需将数据移动到单独的 SQL 存储库中。 Builder 专门设计用于与 InterSystems IRIS 医疗版数据平台中的 FHIR 存储库和多模型数据库配合使用。

1 0
0 203
文章
· 三月 19, 2024 阅读大约需 2 分钟
IRIS/Caché SQL优化经验分享

IRIS/Caché查询慢,主要原因有以下几个:

  • 应用是一个事务型的数据库, 数据模型的设计不适合某些复杂的分析查询

这是慢的原因,不是慢的离谱的原因。数据模型是产品设计的范畴, 这里不讨论, 本文只讨论优化。

  • 历史原因,有些表的索引不够优化

虽然还是设计问题,但可以在实施中或者维护中给出优化方案。

  • 产品运行中的问题造成的查询效率下降

IRIS/Caché数据平台的一个特点是允许跳过SQL约束,对底层数据的直接修改。坏的代码或者应用可能破坏表数据和表索引的约束,造成SQL性能的下降。维护人员应该知道怎么避免,和处理这样的问题。

  • 维护工作缺乏造成

比如Tune Table(调整表), 这是必须做的工作,但可惜很有些项目没有执行过。

0 0
1 222
文章
· 七月 1, 2024 阅读大约需 4 分钟
在InterSystems ObjectScript中使用 VECTORs

迄今为止,我看到的大多数使用向量vector的示例,将它只作为 SQL 中的一种功能,尤其是围绕 VECTOR_Search 的 3 个函数。
* TO_VECTOR()
* vector_dot_product ()
* vector_cosine ()

iris-vector-search 演示包中隐藏着一个非常有用的摘要。
从那里,你可以通过多个链接找到所需的一切。

我还缺少更多的 VECTOR 方法,于是在 Idea Portal 上提出了相关请求。

接着,我想起每个 SQL 方法或存储过程都有一堆 ObjectScript 代码。
于是我开始搜索,下面就是我的研究的一些总结:

0 0
0 52
文章
· 三月 19, 2021 阅读大约需 11 分钟
第十二章 使用嵌入式SQL(三)

第十二章 使用嵌入式SQL(三)

主机变量

主机变量是将文字值传入或传出嵌入式SQL的局部变量。 最常见的是,主机变量用于将本地变量的值作为输入值传递给Embedded SQL,或者将SQL查询结果值作为输出主机变量传递给Embedded SQL查询。

主机变量不能用于指定SQL标识符,例如架构名称,表名称,字段名称或游标名称。主机变量不能用于指定SQL关键字。

  • 输出主机变量仅在嵌入式SQL中使用。它们在INTO子句中指定,INTO子句是仅嵌入式SQL支持的SQL查询子句。
  • 输入主机变量可以在嵌入式SQL或动态SQL中使用。在动态SQL中,还可以使用“?”向SQL语句输入文字。输入参数。这 ”?”语法不能在Embedded SQL中使用。

在嵌入式SQL中,可以在可以使用文字值的任何位置使用输入主机变量。使用SELECT或FETCH语句的INTO子句指定输出主机变量。

0 0
0 134
文章
· 四月 23, 2021 阅读大约需 6 分钟
第五章 优化查询性能(二)

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

使用索引

索引通过维护常见请求数据的排序子集,提供了一种优化查询的机制。
确定哪些字段应该被索引需要一些思考:太少或错误的索引和关键查询将运行太慢;
太多的索引会降低插入和更新性能(因为必须设置或更新索引值)。

什么索引

要确定添加索引是否会提高查询性能,请从管理门户SQL接口运行查询,并在性能中注意全局引用的数量。
添加索引,然后重新运行查询,注意全局引用的数量。
一个有用的索引应该减少全局引用的数量。
可以通过在WHERE子句或ON子句条件前使用%NOINDEX关键字来防止使用索引。

应该为联接中指定的字段(属性)编制索引。左外部联接从左表开始,然后查看右表;因此,应该为右表中的字段建立索引。在下面的示例中,应该为T2.f2编制索引:

0 0
0 123
文章
· 五月 9, 2021 阅读大约需 6 分钟
第四章 多维存储的SQL和对象使用(一)

第四章 多维存储的SQL和对象使用(一)

本章介绍InterSystems IRIS®对象和SQL引擎如何利用多维存储(全局变量)来存储持久对象、关系表和索引。

尽管InterSystems IRIS对象和SQL引擎会自动提供和管理数据存储结构,但了解其工作原理的详细信息还是很有用的。

数据的对象视图和关系视图使用的存储结构是相同的。为简单起见,本章仅从对象角度介绍存储。

数据

每个使用%Storage.Persistent存储类(默认)的持久化类都可以使用多维存储(全局变量)的一个或多个节点在InterSystems IRIS数据库中存储其自身的实例。

每个持久化类都有一个存储定义,用于定义其属性如何存储在全局变量节点中。这个存储定义(称为“默认结构”)由类编译器自动管理。

0 0
0 101
文章
· 五月 24, 2021 阅读大约需 7 分钟
第五章 向邮件添加附件

第五章 向邮件添加附件

向邮件添加附件

可以将附件添加到电子邮件或消息部分(具体地说,是添加到%Net.MailMessagePart%Net.MailMessage的实例)。要执行此操作,请使用以下方法:

这些方法中的每一种都会将附件添加到原始邮件(或邮件部分)的Parts数组中,并自动将IsMultiPart属性设置为1。

0 0
0 103
文章
· 十月 9, 2021 阅读大约需 1 分钟
第四十章 SQL命令 DROP USER

第四十章 SQL命令 DROP USER

删除用户帐户。

大纲

DROP USER user-name

参数

  • user-name 要删除的用户名。

描述

DROP USER命令可删除用户帐户。此用户帐户是使用CREATE USER创建的,并指定了用户名。如果指定的用户名与现有用户帐户不对应, IRIS将发出SQLCODE-118错误。可以通过调用$SYSTEM.SQL.Security.UserExists()方法来确定用户是否存在。

用户名不区分大小写。

还可以使用管理门户删除用户。选择System Administration(系统管理)、Security(安全性)、Users(用户)以列出现有用户。在此用户帐户表上,可以单击要删除的用户帐户的删除。

0 0
0 76