Lotus查询方法慢的要死,谁来帮帮我!!!

问题描述

问题是这样的:我做的是OA办公的,由于公司比较大数据量比较多,我用的是dbSearch方法searchFormula$="selectForm='DocIndexForm'&((StTaskStart>'"+docCurr.StToDate(0)+"'&StTaskStart<'"+docCurr.GetFirstItem("StNextToDate").text+"')|(StTaskEnd>'"+docCurr.StToDate(0)+"'&StTaskEnd<'"+docCurr.GetFirstItem("StNextToDate").text+"')|(StTaskStart<'"+docCurr.StToDate(0)+"'&StTaskEnd>'"+docCurr.GetFirstItem("StNextToDate").text+"'))&StZxrEN='"+docCurr.StUserEN(0)+"'&(StTaskStatus='3'|StTaskStatus='4')"SetdocCollection=dbIndex.Search(searchFormula$,Nothing,0)这样写太慢了而且我还要执行三次这样的查询操作每次执行的时候条件都不相同,我看后台了主要是执行上面这个查询语句的时候慢的要死,每次都都好几秒,三次加起来有时候要等十多秒,太慢了有上面好的查询方法没、如果用view.GetAllDocumentsByKey查询的话怎么传条件为两个日期间的,比如说我要得到2010-07-05和2010-08-05间的数据,怎么查?大侠们帮忙!!

解决方案

解决方案二:
用FTSearch
解决方案三:
数据量大的话,千万不要在view的选择条件里面用跟当前时间有关的条件,否则更新索引的时候服务器会很慢很慢。像你现在这种情况,可以考虑建索引,用FTSearch来做
解决方案四:
FTSearchRange
解决方案五:
仍然建议你用view的查询来处理,不符合时间条件的doc可以不进入逻辑处理部分。
解决方案六:
引用4楼zwm136200的回复:

仍然建议你用view的查询来处理,不符合时间条件的doc可以不进入逻辑处理部分。

这么大数据量,有当前时间为条件的视图会随时刷新,会把他的服务器搞死的
解决方案七:
在检索条件中不要加入时间判断,先检索,再在结果中判断每个文档的时间条件。
解决方案八:
LonusNotes有前途吗?
解决方案九:
兄弟,您的数据量现在是多少,好像不应该出现你现在的情况!
解决方案十:
可以考虑用view.ftsearch.一般数据库在查询前都需要updateFTIndex,但是如果数据量大的话这个方法也是很费时间的,做之前要判断一下。但是,大数据量的数据库查询总归是一件非常痛苦的事情。。。
解决方案十一:
小弟最近在接触用DB.FTsearch遇到个问题我执行FTsearch后查询得到8个文档但是执行查询的用户只对其中的6个文档有查看权限所以导致查询出来的文档中有个两文档我取不到任何域的值(我在个代理里面我已经设置了"作为web用户运行")我期望的查询结果是当前用户只对6个文档有阅读权限那么查询后DocumentCollection.Count应该就是6才对望各位大侠指教
解决方案十二:
数据超过10w,查询就比较痛苦了!
解决方案十三:
在ibm内部使用的lotusnotesDB中,在部署DB之前对设计有如下的规定要求:1.DB的大小不允许超过1G,否则应采取分割DB,多DB,归档等等的架构。2.DB的文档数量不允许超过10w,否则应采取分割DB,多DB,归档等等的架构。......
解决方案十四:
当然这些对DB的要求也是要看硬件配置的。我记得我上述对应的硬件配置是:HardwareSoftwareHardwaretypeRISC-9076OperatingsystemAIXMachinetypeSilverOperatingsystemlevel5.1.0.0Processorspeed332*LotusNotesversionRelease7.0.1
解决方案十五:
可以考虑先建一个用Key分类的视图,先getalldocumentbykey,然后循环处理每条数据
解决方案:
有没有考虑过使用多个视图,或者直接将数据写入sql,再从sql查询呢
解决方案:
谢谢大家,回复的有点晚了,苏州的一个项目,当时我用的是四楼的思路,不过还行了也就是三两秒的问题。我没有用到索引。12楼说的非常好!
解决方案:
我现在的项目架构是年数据量超过2G,或者超过2W条记录必须尽悉分库归档操作。如果你真的是有大量的数据需要查询操作,建议您将查询条件存如关系形数据库,通过LEI每天同步,关系形数据库建立查询索引。domino数据库依然建议进行分库处理,特别是有reader域的时候
解决方案:
建议对于数据量查询较大时,可以将LOTUS库与DB2结合使用.做个映射,专门用经常性的查询功能.这样会真正提高查询效率.否则在LOTUS下,进行复杂大量数据查询确实是个难题.
解决方案:
关于Lotus查询效率的问题http://bbs.lotus-gateway.com/viewtopic.php?f=2&t=155&p=216&hilit=%E6%90%9C%E7%B4%A2%E6%95%88%E7%8E%87#p216
解决方案:
首先做个子表单,然后在script库写入以下代码Functionsearchcon_bs(doccurAsNotesDocument)AsStringDimstrserAsString'第一个条件Ifdoccur.a4(0)<>""Thenstrser="&@contains(a4;"""+Trim(doccur.a4(0))+""")"EndIfIfdoccur.a3(0)<>""Thenstrser=strser+"&a3="""+Trim(doccur.a3(0))+""""EndIfIfdoccur.docsn(0)<>""Thenstrser="&@contains(docsn;"""+Trim(doccur.docsn(0))+""")"EndIfsearchcon_bs=strserEndFunction我这只是对一张数据库模糊查询
解决方案:
查询条件用公式来组成的话,相对来说会快一些。
解决方案:
看看www.soyxer.com可以解决你的问题
解决方案:
可以使用getalldocumentsbykey,日期的条件在遍历文档时进行一一比较,排除不符合的记录。
解决方案:
该回复于2010-12-06 11:44:02被版主删除
解决方案:
该回复于2011-02-24 13:57:39被版主删除
解决方案:
notes本身的查询就是很差劲的。不适合做这样的检索。一般说来,如果你能用关系型数据库作为数据存储,domino和rdbms中各有一套,就好办了。这个也是一个大型系统常用的方法。你可以试一试。没有关系型数据库,可以考虑使用嵌入式数据库,例如apachederby或者hSQLDB

时间: 2025-01-29 00:25:07

Lotus查询方法慢的要死,谁来帮帮我!!!的相关文章

关于mongodb按照字段模糊查询方法

关于mongodb按照字段模糊查询方法   模糊查询:tname包含某个关键字测试' cd /opt/soft/mongodb/bin ./mongo --host 192.168.0.1  --port 17017  test db.test_info.find({"tname": {$regex: '测试', $options:'i'}})  db.test_info.find({"tname": {$regex:/测试.*/i}}) 

MySQL大表中重复字段的高效率查询方法

MySQL大表重复字段应该如何查询到呢?这是很多人都遇到的问题,下面就教您一个MySQL大表重复字段的查询方法,供您参考. 数据库中有个大表,需要查找其中的名字有重复的记录id,以便比较. 如果仅仅是查找数据库中name不重复的字段,很容易 代码如下: SELECT min(`id`),`name` FROM `table` GROUP BY `name`; 但是这样并不能得到说有重复字段的id值.(只得到了最小的一个id值) 查询哪些字段是重复的也容易 代码如下: SELECT `name`,

带合并单元格的Excel数据查询方法

  带合并单元格的Excel数据查询方法.在下面这个图中,A列是带合并单元格的部门,B列是该部门的员工名单. 现在需要根据E2单元格中的姓名,来查询对应的部门. 看看本文给出的参考公式吧: =LOOKUP("座",INDIRECT("A1:A"&MATCH(E2,B1:B8,))) 简单解释一下: MATCH(E2,B1:B8,)部分: 精确查找E2单元格的姓名在B列中的位置,返回结果为4. "A1:A"&MATCH(E2,B1:

几种京东快递查询方法

  很多初次购物的朋友都不知道京东快递如何查询?直接在我的订单下就有物流跟踪信息.另外很简单的打开页面底部京东快递官方网站,找到订单查询标签页,然后输入订单号即可.不了解的朋友可以参考下. 首先,打开页面底部京东快递官方网站,如图所示.京东快递悄然上线,与圆通.申通.韵达快递实现相同的快递服务,却比这些快递更加有保障! 进入后,在首页左上角切换到"订单查询"标签页,然后输入订单号.若您有运单号,也可以输入运单号进行查询,查询方法大同小异. 在文本框中输入订单号后,输入验证码并点击&qu

LinQ To Objects 高级查询方法

 什么是LinQ To Objects?      用一个例子解释,首先定义一个数组,查询数组中的最大值:   int[] arr = { 123, 2, 3, 45, 654, 2324, 897, 56, 6554, 4, 3, 6, 8, 434 };      旧的方法:    int max=0 ; foreach(int a in arr) { if(a>=max) max=a; } Console.Write("最大值:"+ max);           LinQ

Java模糊查询方法详解_java

当我们需要开发一个方法用来查询数据库的时候,往往会遇到这样一个问题:就是不知道用户到底会输入什么条件,那么怎么样处理sql语句才能让我们开发的方法不管接受到什么样的条件都可以正常工作呢?这时where '1'='1'加上list就可以完美解决这个问题了,废话少说,上代码: // 模糊查询方法 public List<person> query() { List<person> list = new ArrayList<>(); Connection con = null

代码-求js中treegrid的查询方法

问题描述 求js中treegrid的查询方法 一个页面用的treegrid显示,显示的根节点和子节点,但是查找的时候只能查到根节点那里,求一个办法可以让我实现能够查到子节点,最好有一个代码模板,谢谢了 解决方案 确定是查询的时候没有子节点还是查到了没有显示

java-oa系统怎么使用jdbc链接数据库调用查询方法最后在jsp上分页显示???

问题描述 oa系统怎么使用jdbc链接数据库调用查询方法最后在jsp上分页显示??? 表名:users , 用户字段:realname 要求 效果: 解决方案 http://blog.csdn.net/aaabendan/article/details/5442144 解决方案二: http://download.csdn.net/detail/zhai56565/5885775 解决方案三: JdbcTemplate类 package com.cloudwebsoft.framework.db

请问怎么在REST接口 根据群组id去查下一个 群组的聊天记录?现在只看到了timestamp查询方法

问题描述 请问怎么在REST接口 根据群组id去查下一个 群组的聊天记录?现在只看到了timestamp查询方法 解决方案 没有通过过id导出的.调用rest接口是导出app所有的记录,报存到你自己服务器过滤