Ahm*_*met 3 sql database intersystems count intersystems-cache
从一张桌子算起来时,我遇到了一个奇怪的问题.表名是Client,并且有一个名为CardNo的varchar(200)列.数据库引擎是Intersystems Cache,查询语法是SQL.
我执行下面的查询以获得具有/没有CardNo的客户端的数量.但得到意想不到的结果如下.
select count(*) from Client
where CardNo is null
--Result: 38000
select count(*) from Client
where CardNo is not null
--Result: 78000
select count(*) from Client
--Result: 265000
Run Code Online (Sandbox Code Playgroud)
没有CardNo的客户端数量是38000.CardNo的客户端数量是78000.表中所有客户端的数量是265000,不等于78000 + 38000.这怎么可能发生?根据文档,查询样式应该没有问题 http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_null
请确保您的指数是最新的.有时人们会更改表定义并忘记构建索引,因此您最终只会在更改索引定义后插入新数据的索引.
即使您没有索引CardNo字段,也需要拥有最新的索引,因为SQL引擎可以选择通过索引全局而不是扩展("main")全局.
您可以从管理门户或终端重建索引:
do ##class(your.class.name).%BuildIndices()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |