我需要找到一個序列號和對象的列表,每個人有一個序列號之間的匹配:查詢集優化
型號:
class Beacon(models.Model):
serial = models.CharField(max_length=32, default='0')
首先,我寫道:
for b in Beacon.objects.all():
if b.serial == tmp_serial:
# do something
break
然後我做了先行一步:
b_queryset = Beacon.objects.all().filter(serial=tmp_serial)
if b_queryset.exists():
#do something
現在,是否有更多優化的第二步?
我不認爲將我的QuerySet強制轉換爲List並執行list.index('tmp_serial')會更快。
謝謝,非常有幫助。你認爲exists()是否超快?如果exists()返回True,那麼首先執行exists()然後獲取對象是否是個好主意? – bixente57
存在確實超快,但如果你需要這些對象,直接獲取它們,不要使用存在。它會爲您節省一個查詢。 –