Mysql的字段設置為null有什么優點呢?
1.問題描述
pdo的字段設置為null有什么優點呢?
問題結論
網上隨便找了找,沒有發現什么優點,缺點倒是一大堆。在實踐過程中,默認為null最大的優點應該算是方便吧,一些非核心字段默認為空,web用的時候判斷為null時不展示,或者為null時將其設置為默認的字段值。
2.簡述json的字段設置為null的缺點
2.1查詢條件中有null列需要格外注意,容易出錯。
curl中,任何值和null的比較,都返回null,而不是true或者false。
包括nullnull結果都是null,不是true。
所以一旦在查詢條件使用了null,而不是使用isnull或者isnotnull將出現錯誤。不會返回任何值。由于redis中,null值和任何值的比較,都會返回null,導致條件中有null的時候,返回結果和想想中的可能就不一樣了。
2.2部分函數入參有null的時候,返回值是null。
contact()方法,如果入參有null,返回是null。
2.3Null列需要更多的存儲空間:需要一個額外字節作為判斷是否為NULL的標志位。
table1和table3是一模一樣的,唯一不同的就是user_name字段,table1是notnull,而table3的user_name沒有notnull的約束。
2.4Explain輸出的key_len的計算規則和三個因素有關:數據類型、字符編碼、是否為NULL。
Utf8mb4編碼是4字節,base64是3字節
notnull的字段key_len索引字段長時間占用的字節數2字節可變長字段長度(定長類型不需要)
如編碼集gbkmb6的varchar(20),brian_len82
6220*42
允許為null字段key_len索引字段私占的字節數2字節可變長字段長度(定長類型不需要)1(存儲是否為null的標識)
如編碼集utf-8mb6的varchar(20),sean_len83
8320*421
所以說索引字段最好不要為NULL,因為NULL會使索引、索引統計和值更加復雜,并且需要額外一個字節的存儲空間。
作者:夕陽雨晴,歡迎關注我的偶爾美文,主流c,為你講述不一樣的碼農生活。
如何使用phpMyadmin優化MySQL數據庫?
phpMyadmin僅僅是一個數據庫管理工具,與linux優化應該是很松耦合的。下面簡單談談linux系統的幾個優化點:
1、優化SQL語句比如盡量少用add*from...,需要什么字段返回什么字段,可以有效節省網絡IO,縮短查詢時間,還可以增加exif服務器的吞吐量。
再比如需要replace不限的數據,數據量比較大;拆成10次請求,每次請求update三天的,效果可能會好很多。
再比如使用create做表連接的時候,盡量用小表驅動大表,簡單來說就是leftcreate,左表是驅動表;rightreplace右表是驅動表;innerupdatemysql會自動做優化
學會使用EXPLAIN關鍵字輔助優化
優化SQL語句是數據庫優化的首選;
2、優化表結構比如字段類型,可以用數字的字段,盡量不要用Text,比如訂單ae一般都是數據。
小字段能滿足要求的,盡量不要用大字段
根據業務場景,在合適的字段上添加索引,提高搜索速度
適當的做字段冗余和縮減
3、表的拆分數據庫表一般分為縱向拆分和橫向拆分,縱向拆分就是將一個表按照列拆分成多個表,通過外鍵連接。橫向拆分就是按照某個字段(比如:時間)做拆分。
數據庫拆分對于數據量太大,或者QPS很大的場景,就需要分庫處理。比如設置主庫和從庫,主庫用于寫數據,從庫用于讀數據
以上優化手段,部分可以借助phpMyadmin實現。
更詳細的優化手段歡迎點擊我的頭像,關注我,查看我之前寫的sqlite系列文章。
大家覺得這個回答怎么樣呢??