gpt4 book ai didi

database - Navision 中的 SETCURRENTKEY() C/AL 函数如何工作?

转载 作者:搜寻专家 更新时间:2023-10-30 21:50:30 25 4
gpt4 key购买 nike

我有以下问题:

  1. SETCURRENTKEY 的实际作用是什么?
  2. SETCURRENTKEY 有什么好处?
  3. 为什么要使用 SETCURRENTKEY
  4. 什么时候使用 SETCURRENTKEY
  5. 使用索引的优势是什么?我如何将其与图书馆旧分类系统的示例相类比?
  6. 该功能解决什么类型的数据库查询效率问题?

我一直在整个互联网和“IT Pro Developer Help”内部 Navision 文档中搜索这个记录不完整的函数,但我找不到正确的问题答案。

我唯一知道的是 SETCURRENTKEY 设置记录变量的当前键并根据它对记录集进行排序。当 SETCURRENTKEY 仅与几个键一起使用时,它可以提高查询性能。我不知道当数据库使用索引与不使用索引时实际发生了什么。

有人告诉我 SETCURRENTKEY 是这样工作的:

It is like the old sorting card system in a library: without SETCURRENTKEY you would have to go through each shelf and manually filter out for the book you want. You would find a mix of random books and you would have to say: "No, not this one. Yes, this one". With SETCURRENTKEY you can have an index analogous to the old system where you would just go to a book or music CD based on its 'Author' or 'Artist' etc.

这很好,但我仍然无法正确回答我的问题。

最佳答案

  1. 使用 SETCURRENTKEY,您可以声明(表索引,可以包含许多字段)以在使用 FINDSET/FINDFIRST/FINDLAST 语句查询数据库时使用,以及您将收到的记录顺序使用 NEXT 语句迭代记录集。
  2. 表现。数据库服务器使用选定的键(表索引)检索记录集。您最好在代码中明确声明 SETCURRENTKEY,因为它会让您思考所需的数据库结构和索引。
  3. 性能,以便您提前了解在遍历记录集时将收到的记录顺序。
  4. 何时使用:

典型的用法是这样的:

RecordVar.SETCURRENTKEY(...)
RecordVar.SETRANGE(Field, ...)
RecordVar.SETFILTER(Field, ...)
RecordVar.SETRANGE(Field, ...)
...
IF RecordVar.FINDSET THEN REPEAT
// do something with records
UNTIL RecordVar.NEXT = 0;

SETCURRENTKEY 是声明性的,只有在执行 FINDSET 时才会生效。在执行 FINDSET 的那一刻,将在 RecordVar 表示的表上查询数据库,使用 SETRANGE/SETFILTER 声明的过滤器和 SETCURRENTKEY 声明的键/索引。

对于 5. 和 6. 以及一般来说,我真的建议您熟悉 basic database index theory .这就是它的含义,您自己使用图书馆/书籍类比很好地解释了这一点。

关于database - Navision 中的 SETCURRENTKEY() C/AL 函数如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25449116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com