通过一般的sql查询操作去查询一张表,如果这张表的体积很大,通过网络返回可能不是一次返回,这就存在一个延时在里面,怎么使用异步来查询。现在如果有两条需要查询的语句,如果按照同步的思想是:
执行查询语句->等待返回结果->执行下一条查询语句。如果使用异步!?????

解决方案 »

  1.   

    C API 中有这个啊。 mysql_use_result() 这个是不等待返回全部结果。
      

  2.   

    python:
    SELECT1="select fieldname1 from table"
    cur.execute(SELECT1)
    result1=cur.fetchall()
    SELECT2="select fieldname2 from table"
    cur.execute(SELECT2)
    result2=cur.fetchall()
      

  3.   

    试试mysql_use_result,但文档说mysql中的mysql_use_result每次只能使用一个结果集进行工作
      

  4.   

    有意思,但我感觉最主要的区别一是mysql_use_result()必须fetch完,才能执行下一句,否则会报错。而mysql_store_result()因为记录集被保存在本地,可以随时跳出fetch动作。第二个区别是mysql_use_result主要消耗服务器内存,而mysql_store_result则主要消耗客户机内存。按楼主的想法,应该是:
    现在如果有两条需要查询的语句,如果按照同步的思想是:
    执行查询语句->等待返回结果->执行下一条查询语句。如果使用异步,我想楼主的意思应该是:
    执行查询语句->等待返回结果
                ->执行下一条查询语句。很明显,如果是单线程,用mysql_use_result适得其反,因为它正好是要求必须执行完fetch动作,才能执行下条查询语句。所以我的判断是,只有用多线程,起多个连接。