社区
Access
帖子详情
这样的查询怎样提升效率?????
cannel
2009-05-08 11:23:55
环境是VS2005,一个小功能用Access数据库作临时表
此功能的其中一部分是对表A进行查询,表A的关键字段有X1,Y1,X2,Y2,这4个字段代表了一条线段的两个端点的坐标值,其中X1一定大于X2
这个查询功能中,表A有N行就要进行约N次查询,比如说我的实验数据有1200万行,就要进行约1200万次查询,所以我想此功能的耗时是跟行数的平方成正比
表A已对X1,X2字段分别建立索引
请问还有什么方法提高效率
...全文
58
7
打赏
收藏
这样的查询怎样提升效率?????
环境是VS2005,一个小功能用Access数据库作临时表 此功能的其中一部分是对表A进行查询,表A的关键字段有X1,Y1,X2,Y2,这4个字段代表了一条线段的两个端点的坐标值,其中X1一定大于X2 这个查询功能中,表A有N行就要进行约N次查询,比如说我的实验数据有1200万行,就要进行约1200万次查询,所以我想此功能的耗时是跟行数的平方成正比 表A已对X1,X2字段分别建立索引 请问还有什么方法提高效率
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cannel
2009-05-08
打赏
举报
回复
我试过对(X1,X2)建立索引,实验感觉还是X1,X2两个字段分别独自建立索引比较快,weight字段一般只有两三种值,这个应该影响不大吧
这表中X1比X2小,在where X2 > " + XMIN + " And X1 < " + XMAX 中,XMIN是点的X值减去半径,XMAX是加上半径,这样搜索后再对每一条搜出来的线计算与点的距离
ACMAIN_CHM
2009-05-08
打赏
举报
回复
从数据库的角度来说,基于你的查询语句,应建议索引(X1,X2)或如果符合条件很多则(X1,X2,Weight)
这个功能是查询某点在一定半径的圆的范围内所有经过的线段
好象不是这个算法啊。是应该算这条直接到圆心的距离。
另外这个临时表的生存期是多少?不否可以考虑用数据文件代替?比如直接的随机文件的读取速度比较快。
cannel
2009-05-08
打赏
举报
回复
查询语句是这个"select * from LineCollection where X2 > " + XMIN + " And X1 < " + XMAX + " order by Weight";
这个功能是查询某点在一定半径的圆的范围内所有经过的线段
这个功能的数据本原是多边形或多段的线段,把所有的点提取出来形成点表,把所有的线段提取出来形成线表,我上边提到的查询就是从点表中逐个提取并对线表进行查询
ACMAIN_CHM
2009-05-08
打赏
举报
回复
你具体的查询功能是什么?
要根据你实际的查询情况来设置索引,或者需要多个索引。然后还要确定哪些功能由数据库来完成,哪些有你的程序来完成。
如果这表中的 1200万 都要用,又没什么复杂的数据库操作,这样你用临时表,还不如直接用TXT/XML文件。
方案很多,看具体你的具体应用才能找出平衡的方法。
WWWWA
2009-05-08
打赏
举报
回复
贴数据吧,直观一些
ACMAIN_CHM
2009-05-08
打赏
举报
回复
由于你的X2与X1没什么关系,是应该只建一个索引就可以了。这个查询中也只会用到一个索引。
其实我不是觉得,直接生成一个按X1排好序的顺序文件效率比较好。
1200万行(double x1,x2,y1,y2,weight) = 12 M * (8 byte*5) = 480 MB 。用ACCESS远不如直接用文件IO来访问的快。找一记录你只要log2(12M)= 27 次也就找到X1位置了。然后顺序读到底。
ACCESS数据库不过是把这个文件访问包装起来了。当然也会有一些开销。
ACMAIN_CHM
2009-05-08
打赏
举报
回复
ACCESS对语句的优化不是太强。
where X2 > " + XMIN + " And X1 < " + XMAX
那建议用(X2,X1)索引,或者改你的where X2 > " + XMIN + " And X1 < " + XMAX 中的顺序。
探讨select in 在postgresql的
效率
问题
电商网站,一个商品属性表,几十万条记录,80M,索引只有主键id,做这样的
查询
如何提高
效率
? select * from table where id in (几百或几千个id) 这些id没啥规律,分散的。。。。 看了一下答案,感觉有好多不...
你必须知道的495个C语言问题
1.4 新的64位机上的64位类型是什么样的? 指针声明 1.5 这样的声明有什么问题?char*p1,p2;我在使用p2的时候报错了。 1.6 我想声明一个指针,并为它分配一些空间,但却不行。这样的代码有什么问题?char*p;*p=...
《你必须知道的495个C语言问题》
1.4 新的64位机上的64位类型是什么样的? 3 指针声明 3 1.5 这样的声明有什么问题?char *p1, p2; 我在使用p2的时候报错了。 3 1.6 我想声明一个指针,并为它分配一些空间,但却不行。这样的代码有什么问题?...
C语言FAQ 常见问题列表
如果空指针的内部表达不是 0 会怎么样? o 6.4 NULL 是什么, 它是怎么定义的? o 6.5 在使用非全零作为空指针内部表达的机器上, NULL 是如何定义的? o 6.6 如果 NULL 定义成 #define NULL ((char *)0) 难道不就...
软件测试经典面试题 (超实用)
集合点失败了会怎么样? 6 12、使用QTP做功能测试,录制脚本的时候,要验证多个用户的登录情况/
查询
情况,如何操作? 6 13、QTP中的Action有什么作用?有几种? 6 14、TestDirector有些什么功能,如何对软件测试过程...
Access
7,712
社区成员
28,799
社区内容
发帖
与我相关
我的任务
Access
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
复制链接
扫一扫
分享
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章