Django4 中文入门教程 Django4.0 数据库访问优化-使用唯一索引列来检索单个对象

2024-02-25 开发教程 Django4 中文入门教程 匿名 5

当使用 ​unique()​ 或 ​db_index​ 的列来检索单个对象时,有两个原因。首先,由于底层数据库索引的存在,查询的速度会更快。另外,如果多个对象与查找对象相匹配,查询的运行速度可能会慢很多;在列上有一个唯一约束保证这种情况永远不会发生。

例如:

>>> entry = Entry.objects.get(id=10)

会比以下更快:

>>> entry = Entry.objects.get(headline="News Item Title")

因为 ​id ​通过数据库索引,并且保证是唯一的。
执行以下操作可能非常慢:

>>> entry = Entry.objects.get(headline__startswith="News")

首先,​headline ​没有被索引,这将使得底层数据库获取变慢。

其次,查找不保证只返回一个对象。如果查询匹配多于一个对象,它将从数据库中检索并传递所有对象。如果数据库位于单独的服务器上,那这个损失将更复杂,网络开销和延迟也是一个因素。