数据库表设计
字段长度分析
在utf8的环境下,一个汉字占3字节,一个数字或字母占1字节
-
字符型
- char(n) 固定长度 n表示可存的字符个数
- varchar(n) 可变长度 n表示可存的字符个数
-
char(10)和varchar(10)的区别?
- 假设存储字符串 abc ,对于char这个数据占10字符(包括7个空字符),对于varchar这个数据就占3字符,10表示的是最大长度
-
效率
- 当char和varchar都是20时,大量数据情况下,每条数据占10字符,varchar效率反而大于char;因为char占用的磁盘空间更大
日期类型
- Date
- 格式:YYYY-MM-DD,范围:'1000-01-01'到'9999-12-31'
- Datetime
- 格式:YYYY-MM-DD HH:MM:SS,范围:'1000-01-01 00:00:00'到'9999-12-31 23:59:59'
- TimeStamp (时间戳)
- 格式:YYYYMMDD HHMMSS,范围:1970-01-01 00:00:00/2038
- YEAR
- 格式:YYYY,范围:1901/2155
索引
- 复合索引
- 复合索引 abc 相当于三个索引 a ab abc 且 b与c都是排好序的
- 最左匹配原则:范围查找如 >、<、between、like会终止匹配,对于复合索引abc ,a=? and b? and c=? 与 a=? and c=? and b=?效果相同(顺序无影响)