Wie schlimm ist das ignorieren Oracle DUP_VAL_ON_INDEX-exception?

Ich habe eine Tabelle, wo ich die Aufnahme, wenn ein Benutzer angeschaut hat, ein Objekt mindestens einmal, also:

 HasViewed
     ObjectID  number (FK to Object table)
     UserId    number (FK to Users table)

Beiden Felder NICHT NULL sind, und bilden zusammen den Primärschlüssel.

Meine Frage ist, da ich egal wie oft jemand angezeigt hat, ein Objekt (nach dem ersten), habe ich zwei Möglichkeiten für das handling von Schneidplatten.

  • Ein SELECT count(*) ... und wenn keine Datensätze gefunden werden, fügen Sie einen neuen Datensatz.
  • Immer nur einen Datensatz einfügen, und wenn es wirft eine DUP_VAL_ON_INDEX Ausnahmen (die anzeigt, dass es schon so war, ein Rekord), ignorieren Sie es einfach.

Was ist die Kehrseite der Auswahl der zweiten option?

UPDATE:

Ich denke, der beste Weg, es zu setzen ist : "Ist der overhead, verursacht durch die Ausnahme, die schlimmer als der overhead, verursacht durch die anfängliche Auswahl?"

InformationsquelleAutor James Curran | 2008-12-08
Schreibe einen Kommentar