php mysql范围查询_如何快速实现mysql范围查询?

我有一堆的id,高达几百上千个id,每个id在数据库中都有唯一对应的数据,我想快速查询出来这个结果集,但以我的知识只知道sql语句用 in(ids) 来查询,这种查询有500个id和有5000个id的效率差别是不是特别大啊?有没有其他方式能高效点?

情境:更新一张excel表格,里面有N条数据,是根据数据库里的数据来更新的。

回复内容:

我有一堆的id,高达几百上千个id,每个id在数据库中都有唯一对应的数据,我想快速查询出来这个结果集,但以我的知识只知道sql语句用 in(ids) 来查询,这种查询有500个id和有5000个id的效率差别是不是特别大啊?有没有其他方式能高效点?

情境:更新一张excel表格,里面有N条数据,是根据数据库里的数据来更新的。

我能想到的也就是两个方法, 1). 像你说的, in(ids); 2). 建临时表, 把id插进去, 然后做join.

就是这个网页里提到的:

http://explainextended.com/2009/08/18/passing-parameters-in-mysql-in-list-vs-temporary-table/

一般来说, 第二种好一些.

就我的理解来说,

第一种in list的方式, mysql会把你传入的id列表排序(排序后在内存中), 然后遍历 数据表, 用每一条记录去 二分查找你的 排序后的id列表; 这种工作方式是不会过索引的.

第二种, 临时表和 数据表做join, 数据表在ID字段上的索引是会被使用的.

附一点临时表使用:

mysql> create temporary table if not exists $TMP (id int);

Query OK, 0 rows affected, 1 warning (0.02 sec)

mysql> insert into $TMP values(1),(2),(3),(4),(5);

Query OK, 5 rows affected (0.05 sec)

Records: 5 Duplicates: 0 Warnings: 0

断开连接后临时表被自动drop掉.

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值