当前位置: 首页 > news >正文

微商城系统开发淘宝的seo是什么意思

微商城系统开发,淘宝的seo是什么意思,建一个公司网站需要几天,机械加工类网站查询函数 select_related 内连接 在 Django ORM 中#xff0c;select_related 是一个查询性能优化工具#xff0c;用于解决关联对象的查询效率问题。当你有两个通过外键#xff08;ForeignKey#xff09;或一对一字段#xff08;OneToOneField#xff09;连接的模型时select_related 是一个查询性能优化工具用于解决关联对象的查询效率问题。当你有两个通过外键ForeignKey或一对一字段OneToOneField连接的模型时通常需要分别查询每个对象。 假设有两个模型 Author 和 Book其中 Book 模型有一个外键指向 Author。如果你要获取所有书籍以及它们的作者信息不使用 select_related 的话默认情况下 Django 会为每本书生成单独的数据库查询去获取作者信息。这就造成了N1查询问题 —— 对于 N 本书你将得到 N1 次数据库查询1次查询所有书籍N次分别查询每本书的作者。 使用 select_related 则可以避免这个问题它会通过 SQL 的 JOIN 语句一次性从相关联的表中预先获取数据转换成你需要的对象。这样无论你查询多少本书只需要一次数据库查询就可以同时获取所有书籍和相应的作者信息。 以下是一个简单的示例展示了没有使用和使用 select_related 的区别 没有使用 select_related: books Book.objects.all() for book in books:print(book.title, book.author.name) # 这里每次循环都会产生一个新的数据库查询来获取 author使用 select_related: books Book.objects.select_related(author).all() # 使用 JOIN 语句提前获取所有作者信息 for book in books:print(book.title, book.author.name) # 不会产生额外的数据库查询在上述使用 select_related 的例子中Django 会生成一个更复杂的 SQL 查询但总体上减少了数据库的访问次数从而优化了性能。此方法适用于“贪婪加载”关联数据的场景特别是当你知道你需要关联数据并且想减少数据库查询的数量时。 select_related 相当于 SQL 语言中的 JOIN 操作特别是 INNER JOIN。当你在 Django ORM 中使用 select_related 方法时它会生成一个包含 JOIN 子句的 SQL 查询这个子句将主表如 Book和相关联的表如 Author连接起来从而一次查询就能获取所有必要的数据。 例如如果我们有以下两个模型 class Author(models.Model):name models.CharField(max_length100)class Book(models.Model):title models.CharField(max_length100)author models.ForeignKey(Author, on_deletemodels.CASCADE)使用 select_related 的 Django 查询 books Book.objects.select_related(author).all()这将生成类似如下的 SQL 语句 SELECT book.id, book.title, author.id, author.name FROM book INNER JOIN author ON book.author_id author.id;在这条 SQL 语句中INNER JOIN 将 book 表和 author 表连接起来让你可以通过单个查询同时访问关联的 Book 和 Author 实例的字段。这避免了逐个获取作者信息的额外查询大幅提高了效率尤其是在处理大量数据的时候。 prefetch_related 外连接 在Django ORM中select_related 默认使用 SQL 的 INNER JOIN。如果你需要执行一个 LEFT OUTER JOIN 来包含那些在关联表中没有匹配记录的主表记录你应该使用 prefetch_related 方法它通过两个单独的查询来模拟 LEFT OUTER JOIN 的行为并且在 Python 代码中将它们组合起来。 不过从Django 1.11版本开始引入了 QuerySet 的 filter() 方法与 isnull 查找条件相结合的方式来实现类似于 LEFT OUTER JOIN 的查询 Book.objects.filter(author__isnullTrue)这会生成类似于以下的SQL LEFT OUTER JOIN语句 SELECT * FROM book LEFT OUTER JOIN author ON book.author_id author.id WHERE author.id IS NULL;如果你想要获取所有书籍及其作者但是保持那些没有作者的书籍在结果集中你可以如下操作 from django.db.models import Prefetchauthor_query Author.objects.all() books Book.objects.prefetch_related(Prefetch(author, querysetauthor_query))上述代码首先会执行一次查询获取所有书籍然后基于书籍中的外键关联的ID再执行第二次查询获取所有作者。在Python层面Django会将这两个结果合并起来模拟出 LEFT OUTER JOIN 的效果并且即使有些书籍没有对应的作者信息它们也会被包括在结果集中。 在某些情况下你可以直接使用 annotate 结合 Count 或者 Case 和 When 等条件表达式来构造更复杂的 LEFT OUTER JOIN 类型的查询。 请注意无论使用 prefetch_related 还是其他方法Django都会试图以最优化的方式获取你请求的数据但这些操作与用纯 SQL 直接编写的 LEFT OUTER JOIN 在底层执行上仍然是有差异的。
http://www.pierceye.com/news/450270/

相关文章:

  • 网站被k还能不能在百度做推广wordpress主题网址导航葬爱
  • 成都网站制作和建设辽阳北京网站建设
  • 合肥金融网站设计网页制作工具分哪两类
  • 专业营销型网站定制wordpress菜单绑定模板
  • 网站建设公司找哪家好石家庄网站改版
  • 建立一个网站要多久网页界面ps制作步骤
  • 珠海网站建设费用自己做网站切入地图
  • 个人在线视频播放网站搭建软件属于网站开发吗
  • 小米的企业网站建设思路c2c的网站
  • 网站设计书籍做网站的基础
  • 买下云服务器怎么做网站官方网站怎么查询
  • 手机版企业网站php西宁做网站公司排名
  • 微网站如何做推广做淘宝客网站需要备案吗
  • 天津网站制作重点windows与wordpress
  • 可以查企业备案的网站吗佛山住房和城乡建设部网站官网
  • 和初中生做视频网站怎么进入追信魔盒网站开发软件
  • 邯郸开发网站有哪些阳江市房产信息网
  • 快速网站推广公司丹阳房产网二手房
  • 做一个卖东西的网站黄村做网站的公司
  • 网站增长期怎么做广州seo推广优化
  • 怎么做拍卖网站吗免费网站推广入口
  • 农产品网站建设的主要工作岳阳seo招聘
  • 每年网站备案抽查惠州营销网站建设
  • 四川网站建设seo友汇网网站建设
  • 企业家居网站建设做公司网站方案
  • 特性设计的网站营销型网站建设的五力原则
  • 网站布局设计工具装修室内设计培训学校
  • 哈尔滨网络科技公司做网站中国建设官方网
  • 紫川网站建设做画找图网站
  • 郑州快速建站公司合肥学做网站app的学校