以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]关于查询效率方面的问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=61227) |
||||
-- 作者:paniwangji -- 发布时间:2014/12/9 11:14:00 -- [求助]关于查询效率方面的问题 我想实现的效果如下: 第一列 - 日期 第二列 - 查询条件 第三列 - 名称 2014-1-4 8 A 2014-1-5 8.5 A 2014-1-6 9 A 2014-1-7 6 A 2014-1-10 5 A 2014-1-11 8 A 2014-1-12 6 A 2014-1-13 10 A 2014-1-14 7 A 2014-1-18 8 A 2014-1-19 7 A 2014-1-22 8 A 2014-1-4 18 B 2014-1-5 16 B 2014-1-8 29 B 2014-1-9 36 B 2014-1-10 25 B 2014-1-11 18 B 2014-1-12 26 B 2014-1-13 19 B 2014-1-14 17 B 2014-1-18 18 B 2014-1-19 17 B 2014-1-22 18 B 上面是我截取的部分数据,我需要根据数据的顺序特征查询到是属于哪个名称的值,并能告诉我时间段; 例:已知 18,16,29 这3个数,需要结果为:“B :2014-1-4至2014-1-8” 因为日期列不是连贯日期,目前我用的办法是 Dim drs As New List(of DataRow) = DataTables(Tablename).SQLSelect(“条件一”) 然后在从drs中逐个遍历,每条记录都先判断时间,加1天有没有记录,如果没有就再加1天,直到有记录然后判断记录的值是否符合条件二,以此类推,这样的查询思路,如果数据少的话这样效率还可以,但是目前我的数据有百万条,名称也有几百个,请问有没有更好的思路能让我的查询效率更高一些? [此贴子已经被作者于2014-12-9 11:26:51编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2014/12/9 11:17:00 -- 做个带数据的例子上来,说明要怎么查。 |
||||
-- 作者:paniwangji -- 发布时间:2014/12/9 11:23:00 -- 数据很简单 就上面3列,但是就是查询起来比较费时间,老师能告诉我一个思路也可以。 |
||||
-- 作者:lsy -- 发布时间:2014/12/9 11:30:00 -- 上数据,详细说明需求,一好理解,二好测试。 楼主自己知道,不代表别人知道。 |
||||
-- 作者:有点甜 -- 发布时间:2014/12/9 11:30:00 -- 组合成条件直接查啊,查出说有数据后,想怎么处理就怎么处理啊
"第一例 in (\'18\',\'16\',\'29\')" |
||||
-- 作者:paniwangji -- 发布时间:2014/12/9 12:47:00 -- 有点甜老师,我这个是SQL的数据库,日期也不是按照从上到下这样的顺序排列的,而且最麻烦的是很多名称之间的数值都很近似,如果有很多包含 (\'18\',\'16\',\'29\') 这些数字但日期不是连续的也会被查出来吧。 |
||||
-- 作者:paniwangji -- 发布时间:2014/12/9 13:08:00 -- 中午刚做了一个例子,大概就是这个效果。例子中有说明,谢谢了!
[此贴子已经被作者于2014-12-9 13:11:32编辑过]
|
||||
-- 作者:lsy -- 发布时间:2014/12/9 14:23:00 -- 1
|
||||
-- 作者:有点甜 -- 发布时间:2014/12/9 14:51:00 -- 汗
Dim filter As String = "" Dim str As String = "" Dim pname = "" e.Form.Controls("结果显示").Text = str |