mysql 用索引應避免空值

2021-09-07 18:41:50 字數 581 閱讀 9165

由於資料庫的複雜性,以訛傳訛的空間非常大,快趕上中醫養生了。避免使用 null 的理由,在高效能mysql裡有提到一段。建議大家多讀些書,少看網上的奇技淫巧。特意把書翻出來摘錄了下以供參考: 

要盡量避免 null 

要盡可能地把字段定義為 not null。即使應用程式無須儲存 null(沒有值),也有許多表包含了可空列(nullable column),這僅僅是因為它為預設選項。除非真的要儲存 null,否則就把列定義為 not null。 

mysql難以優化引用了可空列的查詢,它會使索引、索引統計和值更加複雜。可空列需要更多的儲存空間,還需要在mysql內部進行特殊處理。當可空列被索引的時候,每條記錄都需要乙個額外的位元組,還可能導致 myisam 中固定大小的索引(例如乙個整數列上的索引)變成可變大小的索引。 

即使要在表中儲存「沒有值」的字段,還是有可能不使用 null 的。考慮使用 0、特殊值或空字串來代替它。 

把 null 列改為 not null 帶來的效能提公升很小,所以除非確定它引入了問題,否則就不要把它當作優先的優化措施。然後,如果計畫對列進行索引,就要盡量避免把它設定為可空。 

[1].高效能mysql第二版 page64

mysql 查詢判斷空值

select a.return car area,case when a.return car area then 0 else 1 end from t base bq branch a select a.return car area,case a.return car area when th...

MySQL 中索引優化(即避免索引失效)

全值匹配 查詢欄位按順序在索引中都可以找到。最左字首法則 查詢欄位與索引欄位不同時,會導致索引失效,即如果索引了多列,則查詢欄位從索引最左前列開始,不要跳過已有索引列。不要再索引上做任何計算 包括計算 函式 自動或手動 型別轉換。索引列上不能有範圍 將可能做範圍查詢的字段放在索引順序的最後。盡量使用...

python用均值填充空值 用平均值填充空值

我得到了乙個包含許多nan值的資料集,我想用每列的平均值填充空值。所以我嘗試了以下 def fill mean m df.columns.get loc c for c in df.columns if c in missing for i in m df df.columns i df df.co...