我有以下问题:SETCURRENTKEY
实际上做什么?SETCURRENTKEY
的好处是什么?
为什么要使用SETCURRENTKEY
?
何时使用SETCURRENTKEY
?
使用索引的好处是什么?我如何将其与图书馆的旧排序系统的示例相类似?
这个函数解决了什么类型的数据库查询效率问题?
我一直在互联网和“IT专业开发人员帮助”的内部导航文档中搜索这个文档记录不全的功能,我找不到我的问题的正确答案。
我只知道SETCURRENTKEY
为一个记录变量设置当前键,并根据它对记录集进行排序。当SETCURRENTKEY
只与几个键一起使用时,它可以提高查询性能。我不知道当数据库使用索引而不是不使用索引时实际发生了什么。
有人告诉我SETCURRENTKEY
就是这样工作的:
这就像图书馆里的旧分类卡系统:如果没有SETCURRENTKEY
你就必须检查每一个书架,手动筛选出你想要的书。你会发现一堆随意的书,你不得不说:“不,不是这本。是的,这个”。使用SETCURRENTKEY
可以有一个类似于旧系统的索引,您可以根据“作者”或“艺术家”等访问书籍或音乐CD。
没关系,但我还是不能正确回答我的问题。
最佳答案
使用setcurrentkey可以声明在使用findset/findfirst/findlast语句查询数据库时要使用的键(表索引,它可以包含许多字段),以及使用next语句迭代记录集时将接收的记录顺序。
表演。数据库服务器使用选定的键(表索引)检索记录集。最好在代码中显式地声明setcurrentkey,因为它会让您考虑所需的数据库结构和索引。
性能,以便提前知道在遍历记录集时将接收的记录的顺序。
何时使用:
典型的用途是:
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时,将使用setrange/setfilter声明的过滤器和setcurrentkey声明的key/index在recordvar表示的表上查询数据库。
5英镑。和6。总的来说,我希望你能熟悉basic database index theory。这就是它的本质,用图书馆/书籍的类比很好地解释了这一点。
关于database - Navision中的SETCURRENTKEY()C/AL函数如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25449116/