首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django 2.1.7 查询 QuerySet

上一篇Django 2.1.7 模型 - 条件查询 F对象 Q对象 聚合查询讲述了关于Django模型的介绍F对象、Q对象、聚合查询等功能。...缓存:使用同一个查询,第一次使用时会发生数据库的查询,然后把结果缓存下来,再次使用这个查询时会使用缓存的数据。 查询的缓存 每个查询都包含一个缓存来最小化对数据库的访问。...在新建的查询集中,缓存为空,首次对查询求值时,会发生数据库查询django会将查询的结果存在查询的缓存中,并返回请求的结果,接下来对查询求值将重用缓存中的结果。...示例一: 经过存储后,可以重用查询,第二次使用缓存中的数据。...'mongodb'] In [31]: [ item.name for item in list ] Out[31]: ['nginx', 'kafka', 'mysql', 'mongodb'] 使用这种方式读取查询

1.1K10

Django 2.1.7 查询 QuerySet

上一篇Django 2.1.7 模型 - 条件查询 F对象 Q对象 聚合查询讲述了关于Django模型的介绍F对象、Q对象、聚合查询等功能。...缓存:使用同一个查询,第一次使用时会发生数据库的查询,然后把结果缓存下来,再次使用这个查询时会使用缓存的数据。 查询的缓存 每个查询都包含一个缓存来最小化对数据库的访问。...在新建的查询集中,缓存为空,首次对查询求值时,会发生数据库查询django会将查询的结果存在查询的缓存中,并返回请求的结果,接下来对查询求值将重用缓存中的结果。...示例一:经过存储后,可以重用查询,第二次使用缓存中的数据。...mongodb'] In [31]: [ item.name for item in list ] Out[31]: ['nginx', 'kafka', 'mysql', 'mongodb'] 使用这种方式读取查询

74020
您找到你想要的搜索结果了吗?
是的
没有找到

Django QuerySet查询原理及代码实例

一 概念 Django的ORM中存在查询的概念。 查询,也称查询结果、QuerySet,表示从数据库中获取的对象集合。...当调用如下过滤器方法时,Django会返回查询(而不是简单的列表): all():返回所有数据。 filter():返回满足条件的数据。 exclude():返回满足条件之外的数据。...(book.btitle) 2)缓存   使用同一个查询,第一次使用时会发生数据库的查询,然后Django会把结果缓存下来,再次使用这个查询时会使用缓存的数据,减少了数据库的查询次数。   ...查询不会永远缓存它们的结果。当只对查询的部分进行求值时会检查缓存, 如果这个部分不在缓存中,那么接下来查询返回的记录都将不会被缓存。所以,这意味着使用切片或索引来限制查询将不会填充缓存。   ...(2) queryset的cache是用于减少程序对数据库的查询,在通常的使用下会保证只有在需要的时候才会查询数据库。 使用exists()和iterator()方法可以优化程序对内存的使用

1.3K21

Django 2.1.7 模型 - 条件查询、模糊查询、空查询、比较查询、范围查询、日期查询

属性名称__比较运算符=值 看完上面几句话,肯定是似懂非懂的,那么我们来进入django的交互模式,引入数据模型类来查询一下看看。...: 那么下面使用django的模型查询看看,如下: In [6]: serverinfo = ServerInfo.objects.filter( id__exact = 1 ) In [7]: for...`server_hostname` LIKE BINARY '测试%' LIMIT 21 可以看到,当使用startswith执行查询,那么测试%则是在后面模糊查询。...`server_hostname` LIKE BINARY '%测试' LIMIT 21 可以看到,当使用endswith执行查询,那么 %测试则是在前面模糊查询。...`id` IN (1, 3, 5) LIMIT 21 查询条件为 id IN (1, 3, 5),那么如果要查询 not in 呢?此时可以使用 exclude() 方法。

10.6K20

Django数据库查询优化与AJAX

orm相关的数据库查询优化 惰性查询 惰性查询指当我们只查数据库而不是用这些数据时,Django不会执行查询数据库的代码,目的是减少不必要的数据库操作,降低数据库的压力。...如: res = models.Book.objects.all()#只有当我们使用res时才会执行数据库查询的操作 all、only与defer all 拿到自己的所有的属性,但是没有与其他表建立外键的属性...(当一个查询是另一个查询的条件时,称之为子查询。)...使用:主要用于多对多字段和一对多字段 耗时:查询的次数上 res = models.Book.objects.prefetch_related('publisher') for i in res...Django内置的serializers模块 前端想拿到通过orm查到的一个个对象,(数据库里的一条条记录),后端想把直接实例化出来的对象发送给前端,这时候就需要用到Django给我们提供的序列法方式(

2.3K20

Django 2.1.7 模型 - 条件查询、模糊查询、空查询、比较查询、范围查询、日期查询

” 属性名称__比较运算符=值 看完上面几句话,肯定是似懂非懂的,那么我们来进入django的交互模式,引入数据模型类来查询一下看看。...: 那么下面使用django的模型查询看看,如下: In [6]: serverinfo = ServerInfo.objects.filter( id__exact = 1 ) In [7]: for...`server_hostname` LIKE BINARY '测试%' LIMIT 21 可以看到,当使用startswith执行查询,那么测试%则是在后面模糊查询。...`server_hostname` LIKE BINARY '%测试' LIMIT 21 可以看到,当使用endswith执行查询,那么 %测试则是在前面模糊查询。...`id` IN (1, 3, 5) LIMIT 21 查询条件为 id IN (1, 3, 5),那么如果要查询 not in 呢?此时可以使用 exclude() 方法。

4.1K10

mysql慢查询优化方法_MySQL查询优化

第二步:利用explain关键字可以模拟优化器执行SQL查询语句,来分析SQL查询语句。 第三步:通过查询的结果进行优化。...(2)分析优化器中索引的使用情况,要修改语句使得更可能的命中索引。比如使用组合索引的时候符合最左前缀匹配原则。not in,not like都不会走索引,可以优化为in....id select查询的序列号,表示查询中执行select子句或操作表的顺序 select_type 表示 SELECT 的类型 table 输出结果的表,显示这一步所访问数据库中表名称,有时不是真实的表名字...where:表示存储引擎收到记录后进行后过滤(Post-filter),如果查询操作未能使用索引,Using where 的作用是提醒我们 MySQL 将用 where 子句来过滤结果,即需要回表查询...Using temporary:表示 MySQL 需要使用临时表来存储结果,常见于排序和分组查询 Using filesort:对数据使用外部排序算法,将取得的数据在内存中进行排序,这种无法利用索引完成的排序操作称为文件排序

14K40

查询优化器概念—查询优化器介绍

如何调优 Oracle SQL系列文章第四篇:查询优化器概念之查询优化器介绍。...优化程序在所有考虑的候选计划中选择成本最低的计划。优化程序使用可用的统计信息来计算成本。对于给定环境中的特定查询,成本计算考虑了查询执行的因素,例如I/O、CPU和通信。...由于数据库有许多内部统计信息和工具可供使用,因此优化器通常比用户更有利于确定语句执行的最佳方法。因此,所有 SQL 语句都使用优化程序。...在下图中,优化程序为输入 SQL 语句生成两个可能的执行计划,使用统计信息估算其成本,比较其成本,然后选择成本最低的计划。...查询就像指令“我需要从A点到B点的最有效路线”或“我需要从A点到到B点经过C点的最有效路线”。“旅行顾问使用内部算法来确定最有效的路线,该算法依赖于速度和难度等因素。

1.1K20

Django 模型查询2.3

查询 字段查询:比较运算符,F对象,Q对象 查询 在管理器上调用过滤器方法会返回查询 查询经过过滤器筛选后返回新的查询,因此可以写成链式过滤 惰性执行:创建查询不会带来任何数据库的访问...first():返回第一个对象 last():返回最后一个对象 exists():判断查询集中是否有数据,如果有则返回True 限制查询 查询返回列表,可以使用下标的方式进行限制,等同于sql中的...limit和offset子句 注意:不支持负数索引 使用下标后返回一个新的查询,不会立即执行查询 如果获取一个对象,直接使用[0],等同于[0:1].get(),但是如果没有数据,[0]引发IndexError...异常,[0:1].get()引发DoesNotExist异常 查询的缓存 每个查询都包含一个缓存来最小化对数据库的访问 在新建的查询集中,缓存为空,首次对查询求值时,会发生数据库查询django...:当只对查询的部分进行求值时会检查缓存,但是如果这部分不在缓存中,那么接下来查询返回的记录将不会被缓存,这意味着使用索引来限制查询将不会填充缓存,如果这部分数据已经被缓存,则直接使用缓存中的数据 字段查询

2.3K20

八、Django分组查询

分组查询、F查询和Q查询 分组查询 统计每个出版社出版的书籍的平均价格 第一种方式 obj = models.Book.objects.values('publishs_id').annotate(...__gt=40)) #Q 对象可以使用&(与) 、|(或)、~(非) 操作符组合起来。...当一个操作符在两个Q 对象上使用时,它产生一个新的Q 对象。 你可以组合& 和| 操作符以及使用括号进行分组来编写任意复杂的Q 对象。...同时,Q 对象可以使用~ 操作符取反,这允许组合正常的查询和取反(NOT) 查询: bookList=Book.objects.filter(Q(authors__name="yuan") & ~Q(publishDate...name="yuan") & ~Q(publishDate__year=2017))&Q(id__gt=6)).values_list("title") #可以进行Q嵌套,多层Q嵌套等,其实工作中比较常用 查询函数可以混合使用

62810

ClickHouse 查询优化

有两点原因 [2]: 架构优越 列式存储 索引 数据压缩 向量化执行 资源利用 关注底层细节 但是,数据库设计再优越也拯救不了错误的使用方式,本文以 MergeTree 引擎家族为例讲解如何对查询优化...设计这里,读者可以考虑 28 原则,理论上 80% 查询只会用到 20% 的业务字段,因此可以将使用频率高的业务字段平铺,将使用频率低的字段放入嵌套结构中。...AND rand() % 10 = 0; -- Non-deterministic 插入优化 数据插入看起来和查询性能没什么联系,但是有间接影响。...BufferEngine Buffer 并不推荐常规业务使用,只有在迫切需要查询实时性 + 插入无法大批量预聚合时使用: 无法 atomic insert 即使使用 BufferEngine,数据插入也至少...需要针对某个功能加速时,可以考虑物化视图/投影 全表预聚合加速查询,需要使用 ETL 资源控制 最后,为了避免集群被某个查询、插入弄垮,需要合理安排内存使用,需要给访问账户分权限,在我们业务分为: default

14910

MySQL查询优化

优化SQL语句,合理使用字段索引。...这通常比使用很多INSERT语句块快20倍 ORDER BY优化 InnoDB引擎下,通过有序排序索引顺序扫描,这种方式在使用explain分析查询的时候显示为Using Index,无需额外排序,操作效率较高...若内存装载不下,它会将磁盘上的数据进行分块,再对各个数据块进行排序,然后将各个块合并成有序的结果。...优化分页查询 一般分页查询,通过创建覆盖索引能较好地提高性能。...增加的派生列其他作业是在查询时减少连接操作,避免使用函数 重新组表:指如果许多用户需要查看两个表连接出来的结果数据,则把这两个表查询组成一个表来减少连接而提高性能 分割表 维护数据的完整性 批处理维护是指对复制列或派生列的修改积累一定的时间后

1.5K10
领券