SQL Mobile中的性能,其中一个大列';没有被选中

SQL Mobile中的性能,其中一个大列';没有被选中,sql,performance,sql-server-ce,Sql,Performance,Sql Server Ce,我有一个带有一个表的SQL Mobile数据库。它有几个列,其中包含有用的、经常查询的数据,还有一个列,每个记录(1000多个字符)存储一个不经常查询的相对较大的字符串 想象一下这个假模式,“生活史”字段是一个大字段 table1 String firstName String lastName String address String lifeStory 一个有代表性的问题是: SELECT firstName, lastName, address FROM table1 WHERE fi

我有一个带有一个表的SQL Mobile数据库。它有几个列,其中包含有用的、经常查询的数据,还有一个列,每个记录(1000多个字符)存储一个不经常查询的相对较大的字符串

想象一下这个假模式,“生活史”字段是一个大字段

table1
String firstName
String lastName
String address
String lifeStory
一个有代表性的问题是:

SELECT firstName, lastName, address FROM table1 WHERE firstName = :p1

有人知道在这个表中留下这个不常被查询的大列有什么性能问题吗?

除非您试图实际查看/查询该字段中的数据,否则不应该注意到任何性能问题。

使用VS2005(c#)SQLServerCE库我可以告诉您,它确实影响性能,但我无法真正回答原因。此外,实际上是该列中数据的长度对性能产生了负面影响,而不是列本身

我自己在一个工作项目上做了一些性能测试,我遇到了一个类似的场景,只是多了一个专栏

table1

c1 NVARCHAR (20)
c2 NVARCHAR (20)
c3 NVARCHAR (20)
c4 NVARCHAR (20) 
c5 NVARCHAR (4000) //maximum allowed and fully populated for testing purposes
如果你跑

select c1, c2, c3, c4 From table1
…大约需要1560毫秒

如果创建两个表,拉出大列(并自然提供一个外键来关联这两个表),然后在第一个表上运行相同的查询,大约需要660毫秒

最后,其他测试告诉我,不是列的数量,而是每行数据的大小。i、 e.5列,2个字符宽==2列,5个字符宽。此外,请确保在您的移动设备上运行这些。您可以对这些进行单元测试,但由于我的PC上的马力大得多,我发现时间差为10-20毫秒,而不是上面所示的近1000毫秒

为什么??这只是一个猜测,但是

在移动世界中,数据库管理系统不可能是相同的;它不是一个企业数据库。在封面下,我打赌他们仍在执行OLEDB“搜索”

总的来说,在移动领域,我学会了设计我的数据库不是为了最“规范化”,而是为了支持最常见的用例。祝你好运