2009-06-21 8 views

Antwort

3

Nichts falsch Leistung, aber es riecht als etwas, das besser mit dynamischem SQL getan werden könnte. Schwer zu sagen, ohne den Code zu sehen.

+0

Nachdem ich mit klassischem ASP-Code gearbeitet habe, erzeugt das dynamische SQL, ich persönlich denke, dass Prozeduren der richtige Weg sind. Es ist keine schnelle und schmutzige Lösung, aber ich denke, der Aufwand hat viele Vorteile, wenn Sie die Dinge zum Laufen bringen. Dynamische Abfragen müssen auch gegen sql injection geschützt werden. – ICodeForCoffee

+0

Dynamische Abfragen sind leicht gegen SQL-Injektion geschützt, indem die Verwendung von Parametern anstelle von String-Verkettung vorgeschrieben wird. Im klassischen ASP nicht so einfach zu machen, aber nichts, was mit vb6 nicht möglich wäre und als COM-Komponente integriert wäre. –

1

der max 1.024, aber ich denke, 150 wenig ist über

6

, wenn Sie SQL Server 2008 verwenden Sie den neuen Tabellenparameter verwenden können. Wenn die Parameter identisch sind, können Sie den Tabellenparameter einfach verwenden.

Hier ist der Link zur MSDN. Hier ist another link, ein bisschen mehr erklärt

Genießen Sie.

0

Sie auf jeden Fall die Gründe für alle Parameter identifizieren sollte.

  1. Sind diese Werte in eine Tabelle einzufügen oder zu aktualisieren? Dann können Sie besser einen tabellarischen Parameter für diese Werte verwenden.
  2. Sind sie komplexe Auswahlkriterien? Dann vermute ich, dass Sie einen XML-Parameter verwenden sollten, um die Auswahlkriterien zu erfüllen. Andernfalls könnten Sie die Häufigkeit neu berechnen, mit der die verschiedenen Kriterien tatsächlich verwendet werden. Sie werden feststellen, dass ein einfacherer SP in 80% der Fälle Ihren Anforderungen entspricht.
1

Regulars in den SQL Server-Newsgroups werden mit den vielen Streitigkeiten zwischen Joe Celko und Tony Rogerson und einer von ihnen vertraut ist auf den sehr Gegenstand davon, ob es eine gute Idee, um eine gespeicherte Prozedur mit einer großen Anzahl zu verwenden, von Parametern.

Weil die Frage speziell über die Leistung ist, hier ist Tony Seite des Arguments:

Don't use CSV/XML - use 1,000 Parameters instead!

Tony Rogerson ist ein Landsmann (US = limey) und der Titel ist ironisch (US = NULL).

Verwandte Themen