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
B 樹比B樹更適合索引
b 的磁碟讀寫代價更低。b 的內部結點並沒有指向關鍵字具體資訊的指標,因此其內部結點相對b樹更小。如果把所有同一內部結點的關鍵字存放在同一盤塊中,那麼盤塊所能容納的關鍵字數量也越多。一次性讀入記憶體中的需要查詢的關鍵字也就越多。相對來說io讀寫次數也就降低了。b tree的查詢效率更加穩定。由於非終...
b 樹比b樹優勢以及索引
索引是一種利用某種規則的資料結構與實際資料的關係加快資料查詢的功能 索引資料節點中有著實際檔案的位置,因為索引是根據特定的規則和演算法構建的,在查詢的時候遵循索引的規則可以快速查詢到對應資料的節點,從而達到快速查詢資料的效果 索引結構上主要分為聚簇索引和非聚簇索引,聚簇索引是指索引的結構和排列規則是...
回文數索引python
給定乙個僅由小寫字母組成的字串。現在請找出乙個位置,刪掉那個字母之後,字串變成回文。請放心總會有乙個合法的解。如果給定的字串已經是乙個回文串,那麼輸出 1。import sys n int sys.stdin.readline strip slist for i in range n if n 0 ...