orm效能相關

2022-04-29 02:36:07 字數 1636 閱讀 5671

盡量不查物件,能用values()

select_related('classes') 連表查詢 多對一 一對一

prefetch_related('classes') 子查詢 多對一 多對多

only('name') 指定某些字段 defer 指定排除某些字段

queryset 特性

- only

- defer

- seleted_related

- prefetch_related

class

depart(models.model): 5個部門

title =models.charfield(...)

class

user(models.model): 10個使用者

name =models.charfield(...)

email =models.charfield(...)

dp = models.fk(depart)

比較low的方法 —— 11次單錶查詢

result =user.objects.all()

for item in

result:

print(item.name,item.dp.title)

selected_related方法

—— 只支援~onetoone與foreignkey

—— 主動做連表查詢(1次連表查詢相當於2次單錶查詢)

result = user.objects.all().seleted_related('dp'

)for item in

result:

print(item.name,item.dp.title)

—— 問題:如果鍊錶多,效能越來越差。——但是一般情況下表不會連的特別多!

prefetch_related方法

—— 除了外來鍵與一對一關係還支援多對多!

—— 子查詢《多次單錶查詢》(2次單錶查詢 )

#

select * from user ;#

通過python**獲取:dp_id = [1,2]

#select * from depart where id in dp_id —— 只找相關的depresult = user.objects.all().prefetch_related('dp'

)for item in

result:

print(item.name,item.dp.title)

—— 注意:1次單錶查詢要比1次連表查詢效率高。 

—— 為什麼要用foreignkey?

1、不使用fk的話,浪費硬碟!使用fk可以節省硬碟空間

2、但是同時降低了查詢速度,因為連表操作的效率要低於單錶的操作

3、進行字段約束

4、但是業務的資料量大的話,不會使用fk,為了讓使用者體驗好,查詢速度快,放在一張表中——單錶查詢快。

ORM 效能相關

orm效能相關 1.all users models.user.objects.all values name age role name 2.物件 all users models.user.objects.all 用的時候注意,只拿自己表中的字段,別跨表 3.select related 外來鍵...

sqlalchemy系列 2 orm相關簡易操作

sqlalchemy中的orm讓我們可以很方便的採用類似python物件的方式去運算元據庫,非常的方便實現增刪改查的各種功能,下面一一陳述 值得一說的是,sqlalchemy中的物件分為四種狀態 transient 短暫的,主要指記憶體中的物件 pending 掛起的,這樣的物件準備插入資料庫,等執...

IO效能相關

網絡卡效能優化方案 繫結中斷 至特定cpu 減少介面屬性設定 資料報打入cpu標籤,提公升快取命中 磁碟隨機讀寫優化方案 批量讀寫 尋道更快 轉速更高的硬碟 記憶體作為快取 ssdraid 磁碟順序讀寫優化方案 raid ssdiops 每秒執行的io次數 bw 頻寬,每秒的吞吐量 lat 每次io...