首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  PHP+MYSQL编程 » [原创]请教一个ODBC的问题!!!  


  作者:aken
  注册时间:2005-04-14
  主题/回复:1/1
  积分:406
  等级:★★☆(五级)
  称号:略有小成

  aken_job@avl.com..
  未提供
  www.

 

 发表:2005-04-14 19:30:34 阅读 2304 次 回复 2 次 得分1  |   字号 字色
[原创]请教一个ODBC的问题!!!
一个用ODBC配置的、有过百万条数据的MDB文件。

用以下语句:
SELECT TOP n *
FROM table
WHERE (fields NOT IN
  (SELECT TOP m fields
     FROM table))
注:
从数据表中取出第n条到第m条的记录的方法(n:需取的行数; m:表中起始行)

检索跳页数据时会出现超时操作(比如共有10000页数据,一页一页往下翻时正常,但如果选择跳页后则出现超时,若直接跳到最后一页就更明显了)。

本想改用预置SQL(odbc_prepare及odbc_execute)指令:
$sql="SELECT TOP ? *
FROM table
WHERE (fields NOT IN
  (SELECT TOP ? fields
     FROM table))";
$pare=odbc_prepare=($id,$sql);
$arr=array("10","1000");
odbc_execute=($pare,$arr);

但编译时出现变量代入警告!

请问有没有改善或更好的查询办法。
请高手指点一二!


 
 1#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 1#楼 发表于2005-04-14 22:12:42  评分:1 

由于数据量太大,而脚本执行时间有限,所以出现超时的问题
如果要解决,我觉得从sql语句上面不太容易找到突破口,因为本来这个sql语句就是一个比较基本的查询语句,不涉及到表之间的连接等比较耗时的操作,所以从语句本身上似乎很难再找到更加优化的方法。

可以考虑1、尽量把数据分表存放。原来放在一个表里面的100万条数据,分成2个表,每个表50万条,速度大概就可以提高不止一倍。2、修改脚本的超时时间,可以设置为不限时间或者1分钟。
一般说来,如果一个脚本的正常执行需要1分钟以上,那这个页面即时可以显示出来,也没有实际的价值了。因为太慢了。所以设置成1分钟就可以,如果1分钟仍不能满足要求,就按照第一种方法,想办法把数据分开存放。
 2#楼  
 
  回复人:aken
  注册时间:2005-04-14
  主题/回复:1/1
  积分:406
  等级:★★☆(五级)
  称号:略有小成

   
 2#楼 发表于2005-04-15 19:30:26  评分:× 

我的想法是:
既然它单页(亦即是检索条数有规律地倍增,如10、20、30……)的情况下可以正常显示,而在跳页(数据就相当于几何级数地倍增,如从10一下子跳到10000或250000)就出现超时。会否是ODBC在处理MDB文件中定位时耗时过长?
  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.004sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版