2010-06-02 38 views
0

我正在尝试降低我的django应用程序正在使用的查询量,但我对如何执行此操作有点困惑。在Django中优化此类查询的最佳方法

我想获得一个命中查询设置到数据库,然后过滤来自该设置的项目。我已经尝试了几件事,但我总是得到每一组的查询。

比方说,我想从我的数据库中得到所有的名字,但也分离出刚才名为特德的人。名称和特德集都将在模板中使用。

这会给我两组,一组与所有的名字和一个与特德..但也打两次数据库:

名称列表= People.objects.all()

tedList = namelist.filter (name ='ted')

有没有办法在没有再次敲入数据库的情况下过滤第一组?

+0

首先,请将您的代码缩进四个空格。使用“101010”按钮。其次,Django(和你的数据库)大量使用缓存。你怎么知道这些查询实际上是一个性能问题?请提供一些指标来显示查询会减慢应用程序的速度。 – 2010-06-02 17:12:41

+0

我看到两个命中数据库,因为我认为可能会一击。这就是我要做的。对我来说似乎是常识,一击比两个更好......但我可能是错的。 – chris 2010-06-02 17:47:34

回答

0
tedList = [person for person in namelist if person.name == 'ted'] 

这将过滤的客户端侧的初始QueryList

+0

谢谢!那样做了。 – chris 2010-06-02 17:45:04

+0

数据库查询的速度很快 - 数据库针对这种情况进行了优化。 如果有人真的要测试这两种方法,我会对看到结果感兴趣。 – 2010-06-02 18:52:57