Fro*_*y Z 15 database sql-server database-design
我要的文件路径存储在数据库字段(/tmp/aaa/bbb,C:\temp\xxx\yyy等).我无法确定它们可以存在多久.
鉴于此http://en.wikipedia.org/wiki/Comparison_of_file_systems和http://msdn.microsoft.com/en-us/library/aa365247.aspx,根据文件系统,理论上可能没有长度限制一条路径.
我想将此字段定义为LONGBLOB或VARCHAR(very high value)不明智.我已经考虑过VARCHAR(1024)哪些应该适合最频繁(即使不是全部)的情况,而不是像DB字段那么大.你会推荐什么 ?
谢谢.
Max*_*non 20
使用适合您要支持的数据的长度.由于您使用的SQL Server(直到最近才是严格的Windows产品),您最有可能考虑使用nvarchar(260)作为存储路径名的上限,因为这是典型Windows机器的规格限制.在某些情况下,您可以创建比此更长的路径,但Windows资源管理器在处理它们时往往会遇到问题.
至于SQL Server,列的长度在性能方面非常重要.列长度直接影响:
nvarchar(260)表为例,其中键是sys.master_files列,定义为physical_name.引用客户的每个表现在都需要一个500字节的physical_name = f.pname列.如果该列被定义为FROM sys.sysbrickfiles f,则引用这些列的每个查询将在内存和磁盘I/O中每行节省200个字节.你可以使用VARCHAR(MAX)或NVARCHAR(MAX).
这些是可变长度字段,意味着它们被设计为存储不同长度的值.较长的值比较短的值没有额外的开销.
定义MAX意味着该字段最大可达2GB.
从MSDN(varchar),nvarchar有类似的文档:
当列数据条目的大小变化很大时,请使用varchar.
当列数据条目的大小变化很大时,使用varchar(max),大小可能超过8,000个字节.
小智 8
如果您使用SQL Server,最好知道Microsoft正在使用nvarchar(260)字段在系统表中存储文件路径和名称(如sys.database_files,或sys.sysaltfiles或sys.master_files).
Run Code Online (Sandbox Code Playgroud)Column name Data type Description ------------- ------------- --------------------------- physical_name nvarchar(260) Operating-system file name.
好的做法可能是使用相同的格式来存储您的路径和文件名.
你会的,当然,需要强制执行的大小在用户界面,以确保它不会插入或更新时被截断.
| 归档时间: |
|
| 查看次数: |
14326 次 |
| 最近记录: |