GAE: v2ex这样是不是比较慢?

2010-12-17 15:28:40 +08:00
 julia
上次问库操作方法快慢问题:http://www.v2ex.com/t/5727

但我发现v2ex的大都是 db.GqlQuery ,比如这个取头像的

q = db.GqlQuery("SELECT * FROM " + K + " WHERE name = :1", str(name))


和这个 x.all().filter('name =',k) 谁快?或者有什么高效的方法?

@Livid 说db.GqlQuery最慢,那他干嘛还要用?求解答!
4170 次点击
所在节点    Google App Engine
9 条回复
fsw90628
2010-12-17 15:42:34 +08:00
all()之后再filter看上去肯定不快啊
jeeson
2010-12-17 15:43:52 +08:00
getByObjectId 最快,相当于哈希查询,不过先得获得id
darasion
2010-12-17 17:32:52 +08:00
看起来是不行的,一定实测。
ayanamist
2010-12-18 23:45:14 +08:00
@fsw90628 all()之后是个虚拟对象,必须要用fetch或者迭代才会真正的去取数据,类似ActiveRecord的东西。
我也想不明白为啥@Livid 用这么效率又不高又不Pythonic的方式……
c
2010-12-19 00:03:05 +08:00
代码是不断完善的嘛,有那么一天Livid会重构的 :)
mamimoluo
2010-12-20 14:21:03 +08:00
@fsw90628
不是你想想的那样的,呵呵。你以为是先全部all出来,再做筛选啊!
jckwei
2010-12-20 15:14:23 +08:00
v2ex目前可能运行成本比较高。
fsw90628
2010-12-20 17:32:53 +08:00
@ayanamist @mamimoluo 好吧,我承认是刚起床头脑昏昏回的贴。
举个例子
query = Song.all()
query.filter('title =', 'Imagine')
filter是对query的一次修改,在query.fetch()执行之前什么都没有发生的。
我猜想用Gql是为了代码的统一性吧,有一些高级feature?纯属瞎猜。
Livid
2010-12-21 05:17:15 +08:00
db.GqlQuery 这一句或许确实不够快,但是,如果具体到 V2EX 的这个 handler,那么一切是有缓存的……

只要 handler 在 99% 的时间里够快就足够了。

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

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

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

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

© 2021 V2EX