zoukankan      html  css  js  c++  java
  • ORM之select_related 性能相关

    select_related :                                                  

    一次性取到值,不会发额外的sql请求

    作用:查询主动做连表

    q = models.UserInfo.objects.all().select_related(‘ut’,‘gp’) 
    #ForginKey的字段名
    #3张表做关联

    for row in q:
      print(row.name,row.ut.title)

     连表,性能会差,用户量大就慢。

       对大公司而言,要速度。访问量大,就不用外键。

    ForginKey节省硬盘空间,但是之后查询的时候,速度会慢的代价。

    prefetch_ralated:
    不做连表,做多次查询
    q = models.UserInfo.objects.all().prefetch_ralated('ut')
    #2次sql查询,都是单表查询
    #django内部,ut_id = []

    for row in q:
      print(row.id,row.ut.title) #不连表,查另外一张表


  • 相关阅读:
    poj 2443
    codeforces 263D
    codeforces 263C
    uva 11080
    uva 11235
    uva 11748
    STL uva 11991
    (KM) uva 11383
    (树形DP) uva 10859
    codeforces 242C
  • 原文地址:https://www.cnblogs.com/catherine007/p/8893896.html
Copyright © 2011-2022 走看看