MySQL字段的屬性應該盡量設置為NOT NULL
數據庫建表時,對於一些可填可不填的字段,我們應該盡量把它設置為 NOT NULL。這種做法即可以提高性能,又可以在很大程度上避免空指針類的問題,好處頗多。
1.節省空間
NULL 列需要更多的存儲空間:需要一個額外字節作為判斷是否為 NULL 的標誌位。
2.空指針
查詢時,可以在一定程度上減少 NullPointerException。
3.減少因為空值而出現的計算錯誤
如果有 Null column 存在的情況下,count(NULL column) 需要格外註意,NULL 值不會參與統計。
4.索引
含有空值的列很難進行查詢優化,而且對表索引時不會存儲 NULL 值的。所以如果索引的字段可以為 NULL值,索引的效率會下降。因為它們使得索引、索引的統計信息以及比較運算更加復雜。
應該用0、一個特殊的值或者一個空串代替 NULL值。
5.使用 != ,NOT IN 的情況
NOT IN 、!= 等負向條件查詢在有 NULL 值的情況下,返回永遠為空結果,查詢容易出錯。
以上僅是本人最近學習所做的總結和思考,有不對的地方歡迎指正。
MySQL字段的屬性應該盡量設置為NOT NULL
相關推薦
MySQL字段的屬性應該盡量設置為NOT NULL
except 減少 數據 提高 統計 column 錯誤 字段 指正 數據庫建表時,對於一些可填可不填的字段,我們應該盡量把它設置為 NOT NULL。這種做法即可以提高性能,又可以在很大程度上避免空指針類的問題,好處頗多。 1.節省空間 NULL 列需要更多的存儲空間:需
【20181101】MySQL text類型的column設置為NOT NULL 導致主從1364
5.1 uniq .... 詳細 明顯 方案 read 通過 mat 環境 系統版本 : CentOS release 6.8 (Final) MySQL版本:5.6.29-log MySQL Community Server (GPL) MySQL主從配置信息 binl
Mysql - 增量腳本中修改字段屬性
不知道 form pro pos ase body pre span exists 在增量部署系統的時候, 經常需要提供增量修改的腳本, 如果是修改存儲過程或者自定義函數, 那還是很好改的, 不用擔心表功能收到影響. 如果是改字段呢? 首先不知道字段是不是已經在系統裏面,
MySQL 億級資料需求的優化思路(二),100億資料,1萬字段屬性的秒級檢索
最近在研究億級資料的時候,無意中看到了一個關於寫58同城的文章 https://blog.csdn.net/admin1973/article/details/55251499?from=timeline 其實上面講的version+ext的方式以及壓縮json的思路,對於我來講都可以看得懂
dos環境變量設置及字符串替換
bin pre winrar ansi pat manager etl article bsp (1) 通過wmic命令完畢對系統環境變量的設定,xp下直接生效,win7須要重新啟動電腦或在電腦-》屬性-》高級-》環境變量,下來點確定 @echo off s
Mysql儲存過程4:mysql變量設置
from 默認 pan procedure weight use mysql變量 sql 寫法 默認全局變量是兩個@@開頭, 可用show variables查看所有默認變量: @@user #declare定義變量只能用在儲存過程中 #declare 變量名 數據類型
java list按照元素對象的指定多個字段屬性進行排序
ase 日期 pri num tex itl pop sha 轉換 ListUtils.Java---功能類 http://blog.csdn.net/jiangyu1013/article/details/53894218 [java] view plain co
scala slick mysql 字段過多 tuple問題
imp logs sta block jdb ups 最終 too assembly 原同步服務正常,因需,對方單表新增字段,超過22條 sbt assembly 編譯出錯 too many elements for tuple: 26, allowed: 22 scala
MySQL基礎配置之mysql的默認字符編碼的設置(my.ini設置字符編碼) - 轉載
def 存在 har 編碼 目錄 linux .cn client window MySQL基礎配置之mysql的默認字符編碼的設置(my.ini設置字符編碼) MySQL的默認編碼是Latin1,不支持中文,那麽如何修改MySQL的默認編碼呢,下面以設置UTF-8為例
給MySQL字段添加索引的操作
pri add fulltext 唯一索引 div uniq col key 添加 1.添加PRIMARY KEY(主鍵索引): ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE(唯一索引)
django:DateTimeField如何自動設置為當前時間並且能被修改 ——django日期時間字段的使用
種類 log true 分享圖片 www. 技術分享 djang 默認值 http 創建django的model時,有DateTimeField、DateField和TimeField三種類型可以用來創建日期字段,其值分別對應著datetime()、date()、
Solr[04.檢索Mysql字段]
alt and delta analyze 就是 apache gin ado cal Mysql配置 設計表bless 導入測試數據 Solr基本配置 將mysql-connector-java-5.1.6-bin.jar、solr-dataimporth
MYSQL 字段類型之TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT
tiny lin lte 參數 evel 業務 關系 modify integer 1. tinyint: 只能存儲-128到127大小的數字, 不在乎後面的定義,如tinyint(9). 需1字節存儲空間。 當加有UNSIGNED後,數字可以從0增加到255大小。 db
Rails中重寫Active Record字段屬性
col attr record span 需要 AC code end div 系統重構或升級時偶爾會碰到需要重寫某個字段的情況,例如: 1. 讀取user的name字段時,實際返回name_new字段 class User < ActiveRecord::Ba
MySQL字段類型
class 數值類型 set 字符串 char 如何工作 arc 雙精度 狀態 MySQL字段類型 MySQL支持多種類型,大致可以分為三類:數值、日期/時間和字符串(字符)類型。 數值類型 類型大小範圍(有符號)範圍(無符號)用途 TINYINT
mysql 字段值拼接,同一字段循環拼接
評價 inf not nth eve level sel 字段值 map SELECT trp.rest_id as 商戶id, trp.rest_name as 商戶名稱, trp.longitude as 經度, trp.latitude as 緯度, trp.is_p
ETL工具kettle的幾個小插件(字符串替換,字段選擇,將字段值設置為常量)
sha oracle rac 正則 com 修改字符集 繼續 kettle 輸出 繼續給大家介紹幾個小組件:一、字符串替換這個功能類似於oracle的replace函數,就是將某個字段的某些字符替換成我們給定的字符首先,選擇【輸入流字段】,【輸出流字段】自己命名(就是用來保
mysql 字段處理合集
成功 添加 img 字段名 分享 sge 字段類型 分享圖片 圖片 添加字段 heji 刪除字段 heji 修改字段類型 】 修改成功 修改字段名sgender修改為gender mysql 字段處理合集
使用sql查詢mysql/oracle/sql server/gp數據庫中指定表的字段信息(字段名/字段類型/字段長度/是否是主鍵/是否為空)
statement oracle數據庫 style cte key post creates str columns 1,根據數據庫類型拼接不同URL /** * 根據類型不同拼接連接的URL * @param dbType 1:mysql、2:ora
Django字段屬性和選項
後臺管理頁面 mod nag ffffff http 表單驗證 ron proc 保留 1.模型類屬性命名限制: (1)不能是python的保留關鍵字 (2)不允許使用連續的下劃線,這是由django的查詢方式決定的 (3)定義屬性時需要指定字段類型,通過字段類型的參數指定