sqlite 批量查询问题

2016-09-09 09:58:09 +08:00
 SlipStupig
我有一个查询需要查询多个 id ,我现在采用的是 map(lambda x:sqlite3.execute(param), param)但是觉得好慢好慢,请教一下各位怎么才能解决
3973 次点击
所在节点    Python
7 条回复
chevalier
2016-09-09 10:05:00 +08:00
用 in ,一次查询多个 ID 的数据回来存到字典,再用。原则是尽量减少跟数据库之间的交互。
suueyoung
2016-09-09 10:25:13 +08:00
懒汉如我, 就找 orm 做了.
codehz
2016-09-09 10:32:26 +08:00
sqlite3 的话,一般来说没必要做这个优化。。。。如果觉得有性能问题,先 profile 查查谁最耗时。。。
poorguy
2016-09-09 10:40:05 +08:00
应该在 SQL 层面优化,你的 param 是怎么写的?查询的 id 是否有规律?
SlipStupig
2016-09-09 11:37:20 +08:00
@poorguy
@chevalier
select price from product_price where id=1,问题在于我一行一个只对应一个价格,但是一个商品有多个价格,我去过用 in 我就搞不清楚哪个价格是哪个商品的了
clino
2016-09-09 11:39:49 +08:00
即使你要查这么多次,也可以考虑在一个事务里做,这样可能会快不少
poorguy
2016-09-09 13:52:26 +08:00
@SlipStupig 还是没搞懂你的需求,感觉两次查询可以实现: 1. 查某商品的 product_price 的 ids , 2. select price from product_price where id in ids

退一步说,楼上用事务的方案也是可行的,总比你不停查询数据库好

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/304986

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX