Django—— ORM查询(sql优化)优化了解,Django(元信息)元类建索引

Django(元信息)元类建索引

索引:索引的一个主要目的就是加快检索表中数据,索引是经过某种算法优化过的,因而查找次数要少的多。可见,索引是用来定位的。

class Book(models.Model)
    name = models.CharField(max_length=64)

    class Meta:
        # 自定义表名
        db_table = ‘table_name‘
        # 联合索引: 索引的一个主要目的就是加快检索表中数据
        index_together = (‘tag1‘, ‘tag2‘)
        # 联合唯一索引:两个字段全部重复才算重复
        unique_together = (‘tag3‘, ‘tag4‘)
        # 排序字段
        ordering = ‘ordering_tag‘
        # /admin/中显示的表名称
        verbose_name = ‘table_name‘

ORM查询(sql优化)优化 ,    了解

(1)only() 只查某些字段,要查看其他的字段,后续也能点出其他字段
    uql1 = Book.objects.all().only("name","price")   # 只查了 "name","price" 两个字段
    Book.objects.all()    # 书的所有字段都查了一遍
    print(uq11.first().gender)    # 后续也能点出其他字段,不过自己又重新执行了查询该字段的sql,相当于在重新查了一遍

(2)defer()  除了某些字段,其他的都查
    Book.objects.all().defer("name","price")  # 除了 "name","price" 两个字段,其他的字段都查

(3)values  # 后续不能再点出其他字段了
    Book.objects.values("name","price")   # 只查了 "name","price" 两个字段

自定义聚合函数

    from django.db.models import Aggregate, CharField

    # 自定义聚合函数的名字
    class Concat(Aggregate):  # 写一个类继承Aggregate,
        function = ‘GROUP_CONCAT‘
        template = ‘%(function)s(%(distinct)s%(expressions)s)‘

        def __init__(self, expression, distinct=False, **extra):
            super(Concat, self).__init__(
                expression,
                distinct=‘DISTINCT ‘ if distinct else ‘‘,
                output_field=CharField(),
                **extra)

    eg: Book.objects.aggregate( name=Concat("name") )

原文地址:https://www.cnblogs.com/liu--huan/p/10496424.html

时间: 2024-08-15 09:34:44

Django—— ORM查询(sql优化)优化了解,Django(元信息)元类建索引的相关文章

django orm查询方法详解

目录 1.1.1 生成查询 1.1.2 创建对象 1.1.3 保存修改的对象 1.1.4 保存 ForeignKey 和 ManyToManyField 字段 1.1.5 检索对象 1.1.6 检索所有的对象 1.1.7 过滤检索特定对象 1.1.8 链接过滤 1.1.9 过滤结果集是唯一 1.2.1 结果集是延迟的 1.2.2 其他的QuerySet方法 1.2.3 限制 QuerySets 1.2.4 字段查找 1.2.5 跨关系查询 1.2.6 过滤器可参考模型字段 1.2.7 缓存查询集

Django ORM查询总结

Django ORM 中单表查询: querySet 与 model对象 1.all() :调用者:objects管理器,返回queryset 2.filter() : 调用者:objects管理器,返回queryset 3.get() 方法: 调用者:objects管理器,返回查询到的model对象(注意:查询结果有且只有一个才执行) 4.first(),last() 方法:调用者:queryset,返回model对象 5.exclude() : 调用者:objects管理器,返回一个quer

Python - Django - ORM 查询方法

models.py: from django.db import models class Human(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=32) age = models.IntegerField() birthday = models.DateField(auto_now_add=True) 在数据库中添加几条数据 在 Python 脚本中调用 Dj

python day-76 django orm 查询链表

一.基于双下划线跨表查询(join查询) 在上一篇中,我们简单的介绍了基于对象的跨表查询,本章将继续阐述基于双下划线的跨表查询,所用的表格均为上章中所创建的表格.    ##########################基于双下划线的查询:正向查询,按字段,反向查询,按表名##################### 1.一对多 实例一(正向,用字段): # 查询红楼梦的出版社名称 #方式1: ret=Book.objects.filter(title="红楼梦").values(&q

Django orm查询操作

基于双下划线查询切记!!!!正向查询按字段,反向查询按表名的小写 正向:在Book表里设置关联Obj表,Book------>Obj就是正向查询 反向:在Book表里设置关联Obj表,Obj------>Book就是反向查询 废话不多说,直接上例子: 数据 class Book(models.Model): nid=models.AutoField(primary_key=True) title=models.CharField(max_length=32) price=models.Deci

一个表空间使用率查询sql的优化

话不多说,直接上运行计划: SQL> set lines 500; SQL> set pagesize 9999; SQL> set long 9999; SQL> select * from table(dbms_xplan.display_cursor('41348610',null,'advanced')); PLAN_TABLE_OUTPUT ------------------------------------------------------------------

OGG运维优化脚本(十三)-信息同步类--进程信息上传

文件:pcsinfoupload.sh 路径:$HOME/ggscript/ggupload 功能:用于查询所有进程的部署时填写好的详细配置注释信息,进程状态,生成以HTML格式的文件,并通过上传脚本定时上传至某台目标机器,通过其他脚本整合形成网页 以网页信息浏览所有进程的监控信息 日志路径:$HOME/gglog/ggupload #!/bin/bash cd #HOME if [ -f .profile ];then         . .profile fi if [ -f .bash_p

OGG运维优化脚本(七)-信息修改类--快速注释

文件名:note.sh 路径:$HOME/ggscript/ggnote 功能:该脚本用于注释指定行的配置表,配合重复值检查脚本repeat.sh使用 通过alias初始化入.profile或.bash_profile文件,通过指令note使用 日志路径:$HOME/gglog/ggnote #!/bin/bash if [ $# -eq 0 ]; then         echo "note EXTRACT rowsnum"         exit 2 fi if [ $# -e

OGG运维优化脚本(三)-信息修改类--附加日志增加

文件名: addtrandata.sh 所在路径:$HOME/ggscript/gginsert 功能:用于批量增加表附加日志,属于从加表脚本中独立出来的功能,用于应对表附加日志丢失以及加表附加日志增加失败的情况 #!/bin/bash echo "This script will add trandata( by RenYi)" ls -lrt $HOME/ggserver/dirprm/e*.prm echo "The EXTRACT process:" cd