Best practice per l'ambito dei dati restituiti per stored procedure

2

Ho la seguente situazione:

table1
------------
ID  Name    Param1  Param2  Param3  RegistrationID
1   Test    Value1  Value2  Value3  101

table2
------------
RegistrationID  LangID  Value
101             EN  English-Value
101             DE  German-Value
101             IT  Italian-Value

Sono interessato a quelle che sono buone convenzioni di programmazione. Ad esempio

  1. Restituisce due stored procedure

    select id, name, param1, param2, param3, registrationID from table1 where id = @ID
    
    select registrationID, langid, value from table2 where registrationid = @RegistrationID
    

    Se necessario su un altro livello, unisci questi dati in una singola classe.

  2. Avere una stored procedure che restituirà tutto

    select id, name, param1, param2, param3, registrationID, langid, value from table1
    inner join tabl2 on table.registrationid = table1.registrationid
    where id = @ID
    

    E crea una classe dai dati restituiti.

Gli approcci sono diversi, perché la soluzione 1 dovrà accedere al DB due volte, ma è più facile riutilizzare le stored procedure poiché non uniscono oggetti (tabelle). Nella soluzione 2 è necessario solo un viaggio su DB, ma la procedura memorizzata diventa disordinata e restituisce sia la chiave esterna che tutti i suoi valori.

So che non esiste una risposta per tutti, ma che cos'è una buona pratica? Mi rivolgo alla soluzione 1, ma sono un po 'preoccupato per i viaggi di andata e ritorno in Germania.

    
posta John 08.07.2015 - 15:27
fonte

1 risposta

1

Se il requisito dei dati è il unito dati (soluzione 2), quindi personalizzare la procedura memorizzata per tali dati. Il riutilizzo eccessivo di un mucchio di stored procedure che sono select * from table è best case ... ingombrante e worst case ... impatto ad alte prestazioni (pensa, tirando indietro più dati di hai bisogno di un cavo).

Lascia che il sistema di gestione del database relazionale faccia ciò che sa fare meglio e segui la stored procedure che ti restituisce i dati di cui hai bisogno e solo i dati di cui hai bisogno .

    
risposta data 08.07.2015 - 16:46
fonte

Leggi altre domande sui tag