1.索引需要排序操作的欄位(order_by)為何要有索引?
一般的應用系統,讀寫比例在10:1左右,而且插入操作和一般的更新操作很少出現效能問題,
在生產環境中,我們遇到最多的,也是最容易出問題的,還是一些複雜的查詢操作,
因此對查詢語句的優化顯然是重中之重。說起加速查詢,就不得不提到索引了。
聚集索引
葉子節點整個行中的額資料
輔助索引
葉子節點儲存的是索引欄位 和主鍵值
覆蓋索引
回表聯合索引
正確使用索引
1.區分度高欄位
2.索引的欄位資料量應該儘可能小
3.優先使用聚集索引
4.聯合索引 建立時 把區分度高放左邊
查詢時 儘可能使用最左邊的索引
索引越多越好?
索引能夠提升效率
同時降低了寫入速度
增加額外的磁碟佔用
2.元類
用於建立類的類 叫元類 預設元類都是type
主要控制類的建立__init__ 類的例項化__call__
3.單例
一個類只有一個例項
什麼時候用,大家公用一個印表機,沒有必要每個人建立新的印表機物件 共用一個物件即可
需要比較操作的欄位(> < >= <=)
需要過濾操作的欄位( filter exclude)
經常更新和刪除 的欄位不應該被索引
主鍵必定是索引
外來鍵 預設是索引 (可以不配置)
屬性中定義
meta中定義
from django.db import models# create your models here.
class user(models.model):
# open_id
open_id = models.charfield(max_length=64, unique=true)
# 暱稱
nickname = models.charfield(max_length=256, db_index=true)
# 關注的城市
focus_cities = models.textfield(default='')
# 關注的星座
focus_constellations = models.textfield(default='')
# 關注的**
focus_stocks = models.textfield(default='')
class meta:
indexes = [
# models.index(fields=['nickname'])
models.index(fields=['open_id', 'nickname'])
]def __str__(self):
return self.nickname
def __repr__(self):
return self.nickname