djange資料庫優化操作

2022-04-10 15:51:33 字數 1090 閱讀 7416

一、all()命令分析

1、user_list = models.userinfo.objects.all()    #查詢表一次可以得到該錶的所有資訊

注釋:user_list.query可以查詢到原生sql語句

2、存在問題

for row in user_list:

row中只去取當前表資料,如果需要取外來鍵對應的表中的資料(連表查詢),那麼取多少次就查詢多少次,大大降低了查詢效率

3、解決辦法

1、方法1:values方法

user_list = models.userinfo.objects.values(....)     #可以通過values的方式連表查詢一次性取出所需要的內容(只去取當前表資料和fk表關聯字段)

2、方法2:select_related主動連表方法

user_list = models.userinfo.objects.all().select_related('fk欄位')

#user_list = models.userinfo.objects.all().select_related('fk欄位1','fk欄位2','fk欄位3')    #對多個外來鍵字段主動連表查詢

#user_list = models.userinfo.objects.all().select_related('fk欄位__關聯表字段')    #只能對一對一,一對多表使用不能對多對多表使用

for row in user_list:

row中只去取當前表資料和fk表關聯字段

3、方法3:由於連表降低效能所以通過 prefetch_related方法不主動連表

user_list = models.userinfo.objects.all().prefetch_related('fk欄位1','fk欄位2','fk欄位3')

4:補充:

1、only只取某個字段

# user_list = models.userinfo.objects.all().only('name') 

2、defer排除當前字段   

# user_list = models.userinfo.objects.all().defer('name') 

資料庫優化 資料庫設計優化

一 索引優化 1.首先索引不是越多越好,要視情況而定。因為索引會降低insert和update的效率 insert和update有時可能會重建索引。2.乙個表的索參數量最好不要超過6個,擇優而建。3.專案上線後,根據使用者的查詢條件字段稍微調整資料庫中的字段索引。二 分表 1.縱切 根據表字段來且分...

資料庫引擎優化顧問優化資料庫

現在一直在做的專案,資料量相對也不小,開始的時候沒有覺得,因為是剛開始,資料量還很小,在程式使用過程中速度還挺快,但是隨著資料量的不停的增長,發現程式越來越慢,甚至出現了超時的問題,因此要對程式和資料庫進行優化,前期專案比較緊,沒有針對大資料量業務進行分析設計,所以索引等相關優化沒有做到位,通過後期...

資料庫 優化 資料庫系統配置優化 作業系統優化

資料庫是基於作業系統的,目前大多數mysql都是安裝在linux系統之上,所以對於作業系統的一些引數配置也會影響到mysql的效能,下面就列出一些常用的系統配置。優化包括作業系統的優化及mysql 的優化網路方面的配置,要修改 etc sysctl.conf 1 增加tcp支援的佇列數 net.ip...