[SSRS: ? x2] Campi con apici e chiavi primarie

martedì 09 maggio 2006 - 11.12

Hamelin [FL] Profilo | Junior Member

Saluti a tutti

Avrei due domande su SSRS, di diversa natura:

1) Risolto con una search sul forum (e mi fustigo per non averci pensato prima)


2) Ho una tabella che non ha settata una chiave primaria, e che non avrebbe una chiave primaria significativa neanche se selezionassi tutti i campi (perchè ci sono righe che sono ripetute interamente a causa della logica dell'applicazione che richiede un conteggio dei duplicati). Per migliorare le prestazioni, volevo quindi aggiungere alla tabella un campo con un ID. Nel Server Explorer, quindi, apro il Design Table e... come posso far sì che inserisca automaticamente alle circa 10.000 righe un ID unico per ogni riga? C'è un modo automatizzato dal programma (tipo Access, che se non mi sbaglio inserendo un campo Counter lo completa automaticamente) o dovrei costruirmi un altro modo, tipo una query?

Grazie a tutti per l'attenzione

totti240282 Profilo | Guru

inserisci un nuovo campo formattato come identity ,cioè come contatore.
C'è solo un capitano !!!!!!

Hamelin [FL] Profilo | Junior Member

Come tipi di dati per i campi non ho identity

Ho "uniqueidentifier" però, ma inserendolo mi mette tutta la colonna a NULL (anzichè riempirla automaticamente di un contatore crescente come mi pare faccia Access). Non so se c'è da fare qualcosa di particolare per riempirlo automaticamente se la tabella è già piena...

Forse sbaglio tipo, ma mi sembrava il più simile al contatore tra quelli disponibili:

bigint, binary, bit, char, datetime, decimal, float, image, int, money, nchar, numeric, ntext, nvarchar, real, smalldatetime, smallint, smallmoney, sql_variant, text, timestamp, tinyint, uniqueidentifier, varbinary, varchar

totti240282 Profilo | Guru

come tipo campo devi mettere int ,e tra le opzioni troverei identity e lo devi impostare a true.
C'è solo un capitano !!!!!!

freeteo Profilo | Guru

ciao,
per impostare 1a colonna come identita' il metodo piu consigliato è quello di creare 1a colonna di tipo "int" e specificare nelle proprieta' della colonna che sia 1 identita', specificando tral'altro anche il "passo" da dare all'incremento, come vedi in questa img:

481x254 47Kb


cosi è retroattiva ovvero si occupa lui di mettere i valori anche nelle righe che ci sono gia.
L'unica cosa è ricordati che da codice non la devi considerare quando fai update o insert, si arrangia il motodre di db



ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo

Hamelin [FL] Profilo | Junior Member

Grazie mille, sono riuscito perfettamente :)

Ho impostato questa chiave primaria perchè la generazione del report è piuttosto lenta, e mi avevano detto che in questo modo ci sarebbe stato un notevole aumento di prestazioni... purtroppo ho guadagnato solo qualche secondo :(

Marco comunque il thread come risolto visto che la risposta era proprio quella corretta... Avete idee per migliorare le prestazioni di generazione di un report? (o magari errori comuni che si fanno nella loro costruzione)

Ho notato, ad esempio, che se nella sezione "category fields" di un grafico metto troppe cose (e tra l'altro erano categorie piuttosto pesanti) la generazione del report rallenta in maniera *pesantissima* (il tempo di generazione mi passava da 1 minuto a 6 minuti)... ci sono altri errori del genere, che voi sappiate?

(meglio se apro un altro thread?)

Grazie ancora per la soluzione, e per l'ulteriore ascolto

freeteo Profilo | Guru

ciao,
la 1ma cosa da fare assolutamente (che è anche 1a buona norma di programmazione in generale) è fare le query dei campi che ti servono e non fare le classiche "select * ..." per poi usare meno campi.

Gli indici sono utili sicuramente sopratutto pero' quando metti nella clausola "where" i confronti con l'indice...altrimenti ti cambia poco...

ALtro non saprei, ti consiglio di non usare campi con immagini che visualizzi nel report (campi "BLOB") ma altre specifiche "generali" non ci sono, devi tropvare tu dove sta il collo della bottigli a da te


ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5