Mit VS2005 (c#) und den SQLServerCE-Bibliotheken kann ich Ihnen sagen, dass es tut die Leistung beeinflussen, aber ich kann nicht wirklich beantworten warum. Außerdem ist es die Länge der Daten in dieser Spalte, die sich negativ auf die Leistung auswirkt, nicht die Spalte selbst.
Doing einige Leistungstests von meinem eigenen auf ein Projekt für die Arbeit lief ich in ein ähnliches Szenario nur eine zusätzliche Spalte.
table1
c1 NVARCHAR (20)
c2 NVARCHAR (20)
c3 NVARCHAR (20)
c4 NVARCHAR (20)
c5 NVARCHAR (4000) //maximum allowed and fully populated for testing purposes
Wenn Sie laufen...
select c1, c2, c3, c4 From table1
...dauert es ungefähr 1560 Millisekunden.
Wenn Sie zwei Tabellen erstellen, die große Spalte herausnehmen (und einen Fremdschlüssel erstellen, um die beiden Tabellen miteinander zu verknüpfen) und dieselbe Abfrage in der ersten Tabelle ausführen, dauert dies etwa 660 Millisekunden.
Schließlich haben mir andere Tests gezeigt, dass es nicht an der Anzahl der Spalten liegt, sondern an der Größe der Daten in jeder Zeile, d. h. 5 Spalten, 2 Zeichen breit == 2 Spalten, 5 Zeichen breit. Führen Sie diese Tests auch auf Ihrem mobilen Gerät durch. Sie können einen Unit-Test durchführen, aber aufgrund der deutlich höheren Leistung meines PCs habe ich festgestellt, dass der Zeitunterschied eher 10-20 Millisekunden beträgt als die oben dargestellten fast 1000 Millisekunden.
Warum? Das ist nur eine Vermutung, aber...
In der mobilen Welt kann das DBMS einfach nicht dasselbe sein; es ist keine Unternehmensdatenbank. Ich wette, dass sie im Verborgenen immer noch die OLEDB-"Suchvorgänge" durchführen.
Insgesamt habe ich gelernt, im mobilen Bereich meine DBs nicht so zu gestalten, dass sie am meisten "normalisiert" sind, sondern dass sie den häufigsten Anwendungsfall unterstützen. Viel Glück!