Erstellen Sie Berechnete Spalte mit Daten aus einer anderen Tabelle
Ich habe einen SQL Server 2008 R2-Datenbank. Diese Datenbank hat zwei Tabellen namens " Bilder und PictureUse.
Bild-Tabelle hat die folgenden Spalten:
Id (int)
PictureName (nvarchar(max))
CreateDate (datetime )
PictureUse Tabelle hat die folgenden Spalten :
Id (int)
Pictureid (int)
CreateDate (datetime )
Muss ich eine berechnete Spalte erstellen, in der Picture
Tabelle, die mir sagt, dass, wie oft das Bild angeklickt wurde.keine Hilfe ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie erstellen eine benutzerdefinierte Funktion für die:
Die berechnete Spalte kann dann Hinzugefügt werden, wie diese:
Allerdings würde ich das eher machen Sie eine Ansicht für dieses:
function
undComputed column
CREATE FUNCTION dbo.CountUses(@pictureId INT)
. Auch die Funktion fehltBEGIN .. END
und einRETURN
( NofUses = 1 )
in allen Bild-Zeilen , was ist das problem ?PictureUse
?PictureUse
haben fast 90.000 plus Einträge und ich sah nun, dass für die paar BilderPictureUse
haben 35 oder 38 Zeilen ...Eine berechnete Spalte kann nur Verweise auf andere Spalten in derselben Tabelle. Sie konnte (als pro jeroenh ist Antwort) eine UDF benutzen, aber die Spalte wird nicht gespeichert oder indexiert werden und so hat es zu sein, jedes mal neu berechnet die Zeile, auf die zugegriffen wird.
Könnten Sie eine indizierte Sicht, die diese Informationen enthält (wenn, wie ich vermute, es ist nur die Anzahl der Zeilen aus
PictureUse
):Hinter den kulissen, SQL Server effektiv erstellen Sie eine Tabelle, die die Ergebnisse enthält dieser Ansicht, und jede insert -, update-oder delete, um
PictureUse
behält diese Ergebnisse Tabelle automatisch für Sie.du musst nicht fügen Sie die berechnete Spalte in Ihrer Tabelle, weil, nach seiner aktualisiert,wenn die ursprüngliche Tabelle Daten geändert wurde, dann werden die Daten inkonsistent werden , können Sie immer verwenden Sie diese select-Anweisung, um die Anzahl der Spalten, oder erstellen Sie es als eine Ansicht
Diese arbeiten
versuchen, diese