python - Django 类常量与数据库查找性能

标签 python sql django database

<分区>

假设我有一个像这样的 Django 模型:

Class Shape(models.Model):
    SHAPE_MAPPING = {
        'square': {'is_symmetrical': True},
        'rectangle': {'is_symmetrical': False}
    }
    is_symmetrical = models.BooleanField(default=False)
    # other fields go here

什么是更合适的查询形状是否对称的方法?
我在我的 shell 中运行了一个测试查找,结果如下:

ShapeType.objects.get(name='square').is_symmetrical = 0.0212440490723 seconds 
ShapeType.SHAPE_MAPPING['square']['is_symmetrical'] = 2.86102294922e-06 seconds

忽略它是形状等的概念设置,并假设这些是不会改变的物理属性。我在问:是否(以及何时)在模型类级别创建非 rel 常量结构以加快查找速度是合适的。

最佳答案

好吧,你有时间证明如果可能的话使用常量会更快。您为常量获得的时间不会随着时间的推移而恶化,但是如果您在数据库中进行查找,它会随着表的增长而变得越来越糟。索引在这里对您没有帮助,因为这是一个 bool 字段,无法有效地编制索引。

如果您决定改用缓存,性能仍然会比使用常量慢。虽然缓存性能不会随着增长而恶化,但网络调用的开销确保它比持续查找慢。

关于python - Django 类常量与数据库查找性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37604979/

相关文章:

android - 现在我需要知道什么才能让我的网站在移动设备上运行?

sql - 具有多个连接字段的 Django ORM 查询

python精确子串匹配

mysql - 将非空 CONCAT_GROUP 连接到 MySQL 中的父列

python - DRF : only Author can create or update the book permission

mysql - sql嵌套连接内连接和左连接

sql - 计算时间范围内列表中的项目 SQL

python - 为什么 vars(response) 不显示response.text? (使用Python请求模块)

python - 如何获得对生成器发送方法的弱引用?

python - Django .update 不调用覆盖保存?