我正在使用一个非常慢的数据库。我们使用ASP.NET来访问/填充数据库。我是数据库的新手,我发现有些事情做得不好。我希望对这些有更好的见解。
在我们的数据库中,varchar(255)几乎用于所有包含zip_codes,text_ids,名称,地址和电话号码的字符类型字段。一张桌子中大约有60张,其中一些也用于比较。我的问题是对性能的拖累有多大?我应该改变它还是保持原样。我正在寻找可以突出性能问题的答案。
编辑:所以我认为我需要处理连接而不是varchar。有人可以回答我的问题Can I use connection pooling with SQLDatasource?。登录需要大约20秒,之后它变得可以接受但仍然很慢。数据库和应用程序在同一台机器上。
答案 0 :(得分:2)
保持原样。此定义应该没有问题(至少只要MS SQL Server上的总记录大小不超过8KB)。您的问题很可能与您的查询有关,因此隐式地将索引定义和用法。
由于除主键之外没有任何索引,因此应检查慢速运行的查询并将索引添加到WHERE
子句中的过滤器字段。您可能需要考虑以下有关SQL Server性能的提示汇编:
答案 1 :(得分:2)
不要担心这个。首先,您需要查看索引。接下来,您需要查看调整您拥有的特定长时间运行的查询。根据我的经验,糟糕的查询编写是性能不佳的最常见原因之一。但听起来你基本上没有索引,所以必须先来。
答案 2 :(得分:1)
varchar
字段的长度比使用邮政编码,电话号码等数字更少。
Numerics占用 LOT 的空间少于字符串。例如:
28245
作为smallint
需要 2个字节
'25245'
为varchar(255)
需要(数据为5个字节)+(存储长度为2个字节)= 7个字节
你也会遇到奇怪的排序问题,因为字符串的排序方式与数字排序不同。
话虽如此,varchar(20)
和varchar(255)
之间没有性能差异。 Varchar是varchar是varchar,唯一的区别是它们可以在字段中占用的空间的LIMIT。
答案 3 :(得分:0)
除非此表中包含大量数据,否则我认为字段类型不会影响性能。每当我被要求考虑提高数据库的性能时,我通常可以通过改进访问数据的查询并在已经存在的数据上创建更好的索引来产生重大影响。
此外,数据库和网站是否在同一台服务器上运行,或者是否存在导致延迟的缓慢连接?