我有以下两段代码:
首先,在SQL中:
self.cursor.execute('SELECT apple_id FROM main_catalog WHERE apple_id=%s', apple_id)
if self.cursor.fetchone():
print '##'
接下来,在Django中:
if Catalog.objects.filter(apple_id=apple_id).exists():
print '>>>'
第一种方式比第一种方式快100倍,比第二种方式快100倍。什么导致Django变得如此慢?
答案 0 :(得分:7)
通常,ORM会为每行实例化一个完整的对象并返回它。你的原始SQL不会这样做,所以它不会受到引发的惩罚。对于您不打算使用该对象的大型结果集,最好绕过ORM。