教你合理设计数据表,将优化进行到底
来源:互联网 发布:淘宝卖保健品需要什么 编辑:程序博客网 时间:2024/05/16 16:16
教你合理设计数据表,将优化进行到底 收藏
最近整理了下,希望对大家能有所帮助亚 wdx2008
------------------------------------------
字符
varchar 可变字符 和存储的字符字节相等 列:abc123占用6个字节(表现为占用磁盘大小,下同)
nvarchar 可变字符 是实际存储字节的两倍 例:abc123占用12个字节 该字符使用Unicode编码支持多国语言
char 固定字符 实际表现例:指定列的长度为10 将abc123填充进去后面将出现4个空格。
整数
bigint 占用8个字节
从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。
int
从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。
smallint 占用4个字节
从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整数数据。
tinyint 占用一个字节
从 0 到 255 的整数数据。
总结:
1.如果网站只是中文,不涉及多国语言的建议使用varchar,使用nvarchar将浪费空间,影响效率。
2.字符长度相对固定的要使用char字段,比如USER_IP。char是定长的, 移动到下一条记录, 只需要做固定长度的指针偏移即可. varchar则必须根据当前记录的长度算出下一个数据指针的偏移.
3.字符为数字的最好使用数字型数据。因为其占用字节更小且排序亦占优势。如手机号码使用Varchar需11位 使用bigint则占用8位。
几个问题:
1. char(n)一定比varchar(n)速度快么?
不一定
计算varchar的偏移是会花去一些cpu时间,但性能瓶颈不在此,在io.
db的io单位是数据页(8192字节)(一页存有多个数据行,数据行不能跨页。当然image,text等例外).
因此一页中行越多,性能越好。
2.使用的数字可能很小,但如果都定义成INT对效率有影响吗?
是的
这个是当然的,首先表现为int和tinyint占用的字节不同,也可理解成占用的磁盘的大小不同,较小的字节可以省去不必要的 内存消耗和相关指针转移。
3.varchar/char不支持多国语言,为什么英文和中文都能正常显示?
这是因为服务器的操作系统和所安装的MSSQL都是中文的。
参考:http://topic.csdn.net/t/20060324/18/4638303.html
4.其它还有什么方法提高数据库查询效率
合理建索引必不可少。
可参考http://topic.csdn.net/t/20040415/10/2967554.html
不同编码字节长度测试代码:
System.Text.Encoding.Unicode.GetByteCount(StrTest);
System.Text.Encoding.UTF8.GetByteCount(StrTest);
System.Text.Encoding.GetEncoding("GB2312").GetByteCount(StrTest);
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/octverve/archive/2008/02/03/2079315.aspx
- 教你合理设计数据表,将优化进行到底
- 千万级数据?教你合理设计数据表,将优化进行到底
- 将数据库优化进行到底!!
- 将PCB设计进行到底
- 将PCB设计进行到底
- 将PCB设计进行到底
- 将linux文件大小优化进行到底
- 将linux文件大小优化进行到底
- Android UI 之一步步教你自定义控件(自定义属性、合理设计onMeasure、合理设计onDraw等)
- Android UI 之一步步教你自定义控件(自定义属性、合理设计onMeasure、合理设计onDraw等)
- Android UI 之一步步教你自定义控件(自定义属性、合理设计onMeasure、合理设计onDraw等)
- Android UI 之一步步教你自定义控件(自定义属性、合理设计onMeasure、合理设计onDraw等)
- Android UI 之一步步教你自定义控件(自定义属性、合理设计onMeasure、合理设计onDraw等)
- Android UI 之一步步教你自定义控件(自定义属性、合理设计onMeasure、合理设计onDraw等)
- Android UI 之一步步教你自定义控件(自定义属性、合理设计onMeasure、合理设计onDraw等)
- Android UI 之一步步教你自定义控件(自定义属性、合理设计onMeasure、合理设计onDraw等)
- Android UI 之一步步教你自定义控件(自定义属性、合理设计onMeasure、合理设计onDraw等)
- Android UI 之一步步教你自定义控件(自定义属性、合理设计onMeasure、合理设计onDraw等)
- Java中的异常分类
- 切莫迷失,认清架构、框架、模式
- Web相关
- 用户模式的线程同步原子访问:InterLocked互锁函数
- 标签使用
- 教你合理设计数据表,将优化进行到底
- How Tomcat works_Chapter01_A simple Web Server
- Vega開發大事記
- 反射实例
- Head First C# 中文版 第13章 控件和图形 page604
- DevExpress GridControl技巧
- Tips] 移植Oracle数据库到PostgreSQL的要点
- 如何让你的sql跑得更快--bit vs. tinyint vs. int之探讨
- Datetime格式化大全