1、數據庫字段中為什么使用越簡單的數據類型越好
* * * * *
操作簡單的數據類型需要的CPU周期比較少,例如 :因為字符集和校對規則(排序規則)使得字符串比較比整形比較更為復雜,需要更多的CPU周期。
2、為什么要盡量避免使用null
* * * * *
可為NULL的列會使用更多的存儲空間,在MySQL里也需要特殊處理。當為NULL的列被索引時,每個索引記錄需要一個額外的字節,在MyISAM里甚至還可能導致固定大小的索引(例如只有一個整數列的索引)變成可變大小的索引。
3、使用varchar(5)和varchar(200)存儲‘hello’的空間開銷是一樣的,那么使用更短的列有什么優勢?
* * * * *
更長的列會消耗更多的內存,因為mysql通常會分配固定大小的內存塊來保存內部值,尤其是使用內存臨時表進行排序或操作時會特別糟糕,在利用磁盤臨時表進行排序時也同樣糟糕,所以最好的策略是只分配真正需要的空間。
4、為什么要盡量避免使用枚舉類型
* * * * *
枚舉的字符串列表是固定的,添加或者刪除字符串必須使用alter table ,這會導致表重建。
5、為什么一張表內不能創建太多列
* * * * *
MySQL的存儲引擎API工作時需要在服務器層和存儲引擎層之間通過行緩沖格式拷貝數據,然后在服務器層將緩沖內容解碼成各個列。從行緩沖中將編碼過的列轉換成行數據結構的操作代價是非常髙的,轉換的代價依賴于列的數量。
- 前言
- 函數參考
- Socket 函數
- socket_accept
- socket_bind
- socket_clear_error
- socket_close
- socket_connect
- socket_create_listen
- socket_create_pair
- socket_create
- socket_getpeername
- socket_getsockname
- socket_last_error
- socket_listen
- socket_read
- socket_recv
- socket_select
- socket_send
- socket_set_block
- socket_set_nonblock
- SplQueue
- 魔術方法
- 魔術常量
- 雜項
- backlog的用處
- new self()和new static()的區別
- PHP變量的生命周期
- PHP抽象類
- 對象接口
- PHP中的常用關鍵字
- 常量
- 內存泄露
- global 與 $GLOBAL
- 簡單說明CGI和動態請求是什么
- 設計模式
- 單例模式
- 工廠模式
- 適配器模式
- 策略模式
- 觀察者模式
- 控制反轉IoC簡介
- session
- use_trans_sid
- auto_start
- session_id
- cookie_secure
- 面試
- 數據庫相關
- 語句相關
- 索引相關
- 字段相關
- PHP相關
- 字符串相關
- 函數相關
- 運算符優先級相關
- 錯誤相關
- redis相關
- 10個常見的Redis面試"刁難"問題
- mysql
- MySQL中的鎖
- MySQL存儲引擎MyISAM 和 InnoDB的區別
- MySQL半同步復制
- explain 命令詳解
- 索引
- 數據庫事務
- MySQL和B樹的那些事
- git
- github----向開源框架提交pr的過程
- 推薦博客
- linux
- 命令
- free
- 高并發
- 搶購/秒殺功能
- 算法
- 一致性Hash算法