Bart Duncan hat einen sehr interessanten Blog-Eintrag zu Short-Circuiting und CASE Audrücken verfasst.
Immer wieder kann man die Datenbank Communities die Behauptung lesen, dass ein SELECT (1) schneller sein soll als ein SELECT COUNT(*).
Genau einmal pro INSERT/UPDATE/DELETE Aktion wird ein Trigger abgefeuert. Auch wenn zum Beispiel ein UPDATE Statement mehr als eine Zeile betrifft.
Ein kürzlicher Beitrag von Yuri (object_id der aktuellen gespeicherten Prozedur ermitteln) hat mich daran erinnert, dass ich schon seit einiger Zeit meinem Unmut über eine Inkonsequenz in SQL Server Ausdruck verleihen wollte.
So einfach und leicht das Definieren der IDENTITY Eigenschaft für eine numerische Spalte ist, so umständlich und wenig intuitiv ist das Entfernen dieser Eigenschaft später wieder. Es gibt tatsächlich keinen direkten Weg, so wie ALTER TABLE DROP IDENTITY oder ALTER TABLE ALTER COLUMN...
Dies passiert häufig, wenn man graphische Tools wie SSMS zum Tabellendesign verwendet oder seine CREATE TABLE Statements folgendermassen schreibt:
DECLARE @i int, @l int;
SELECT
@i = 12, @l = LEN(@i);
SELECT
SUM(x.Digit)
FROM
(SELECT
CAST(SUBSTRING(RTRIM(@i), N.Number, 1) AS int) AS Digit
FROM
dbo.Number N
WHERE
N.Number BETWEEN 1 AND LEN(RTRIM(@i))
) x;
Immer wieder kann man Leute beobachten, die fragen, warum ihr LEFT JOIN Statement nicht das gewünschte Resultset zurückbringt.