为什么django ORM比原始SQL慢得多

Dav*_*542 3 python mysql sql django query-optimization

我有以下两段代码:

首先,在SQL中:

self.cursor.execute('SELECT apple_id FROM main_catalog WHERE apple_id=%s', apple_id)
if self.cursor.fetchone():
    print '##' 
Run Code Online (Sandbox Code Playgroud)

接下来,在Django中:

if Catalog.objects.filter(apple_id=apple_id).exists():
    print '>>>'
Run Code Online (Sandbox Code Playgroud)

第一种方式是在100k条目的循环中比第二种方式快4倍.Django的速度如此之慢?

huk*_*kir 7

通常,ORM会为每行实例化一个完整的对象并返回它而烦恼.您的原始SQL不会这样做,因此它不会受到引发的惩罚.对于不打算使用该对象的大型结果集,最好绕过ORM.