in操作在很多時候是可以優化查詢的,但是當有order by或者其他需要遍歷所有結果的語句時需要注意,如果in的內容比較多,應該分批查,例如select * from table where name in (?) and type in (1,2,3) order by id desc limit 10
,如果要查的name很多,資料庫會查出所有結果再排序, 解決辦法:把name分成若干堆,多個協程並行查詢,在記憶體中聚合結果
注意索引是否能觸發,最好explain檢查一下
儘量減少資料庫的查詢次數,因為時間上和資料庫通訊的成本一般都會高於記憶體,而且可以減輕資料庫的壓力
索引只會儲存索引欄位和主鍵的值,所以如果沒必要就不要查詢多餘的字段
資料庫的寫操作會把表hang住,不應該有大批量的寫,不能建立複雜的索引
能預編譯盡量預編譯,一方面是速度有快取 ,一方面是安全防注入
SQL開發注意事項
不要使用count 列名 或count 常亮 代替 count 說明 count 會統計值為null的行,而count 列 不會統計此列為null值的行。當某一列的值全為null時,count col 的返回結果為0,但sum col 的結果為null,所以使用sum 時需要注意npe問題。使用 i...
Python後端開發注意事項(Tornado)
對於實時性要求高的資料,始終使用主庫session進行查詢訪問,而非從庫 session在commit前,外部是看不到改變的 使用 sqlalchemy orm 建立資料庫模型時,統一使用sqlalchemy.schma.index name,expressions,kw 方式建立索引,構建 tup...
SQL開發效率注意事項
1 所有的 select建議加nolock,更新語句加rowlock select columename from tablename with nolock join tablename2 t2 with nolock 2 應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引...