Python 索引 B 數 比如書的目錄

2022-06-23 19:33:12 字數 1521 閱讀 7064

1.索引

為何要有索引?

一般的應用系統,讀寫比例在10:1左右,而且插入操作和一般的更新操作很少出現效能問題,

在生產環境中,我們遇到最多的,也是最容易出問題的,還是一些複雜的查詢操作,

因此對查詢語句的優化顯然是重中之重。說起加速查詢,就不得不提到索引了。

聚集索引

葉子節點整個行中的額資料

輔助索引

葉子節點儲存的是索引欄位 和主鍵值

覆蓋索引

回表聯合索引

正確使用索引

1.區分度高欄位

2.索引的欄位資料量應該儘可能小

3.優先使用聚集索引

4.聯合索引 建立時 把區分度高放左邊

查詢時 儘可能使用最左邊的索引

索引越多越好?

索引能夠提升效率

同時降低了寫入速度

增加額外的磁碟佔用

2.元類

用於建立類的類 叫元類 預設元類都是type

主要控制類的建立__init__ 類的例項化__call__

3.單例

一個類只有一個例項

什麼時候用,大家公用一個印表機,沒有必要每個人建立新的印表機物件 共用一個物件即可

需要排序操作的欄位(order_by)

需要比較操作的欄位(> < >= <=)

需要過濾操作的欄位( 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