begin process at 2010 03 20 03:11:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

SQL Server, MSDE, SQL Express

 > 

Procédures Stockées

 > 

Index Dans SQL


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Index Dans SQL

vendredi 24 octobre 2008 à 15:47:51 | Index Dans SQL

crn_c21

Bonjour,

Dans une table SQL 2005, j'ai un champ IdRlt(clè primaire).Dans ce champ, j'ajoute et je supprime des lignes très régulièrement et je dois donc chercher avant de faire une nouvelle insertion le premier identifiant "libre". Dans une procédure stockée, je cherche le premier identifiant libre à partir de 1 et tant que je ne trouve pas , j'incrémente de 1.

Mon problème est que cette table possède plusieurs millions d'enregistrements et que la procédure stockée est très longue .

Quelqu'un aurait-il une autre idée pour rechercher le premier IdRlt "libre"?

Merci de votre aide
dimanche 26 octobre 2008 à 16:47:05 | Re : Index Dans SQL

coq

Administrateur CodeS-SourceS
Salut,

As tu vraiment besoin de combler les trous ?

Si oui, essaie de faire quelquechose autour de cette requête là, basée sur une CTE et ROW_NUMBER (exemple basé sur la table [Person].[Address] de la base AdventureWorks) :

WITH IDsAndRowNumbers AS
(
    SELECT [AddressID] AS ID,
        ROW_NUMBER() OVER (ORDER BY [AddressID] ASC) AS RowNumber
    FROM [Person].[Address]
)
SELECT TOP 1 [ID], [RowNumber]
FROM IDsAndRowNumbers
WHERE [RowNumber]<>[ID]


Cette requête permet de sortir l'ID de la première entrée où le numéro séquentiel généré par ROW_NUMBER est différent du numéro séquentiel de la clé, ce qui indique un gap.
Prévoir ce qu'il faut en sortie pour les cas où aucun gap n'est trouvé, etc etc

Ca devrait mieux tourner qu'un curseur mais je pense qu'en cas d'opérations d'insert intensives tu devras basculer sur une autre stratégie.


/*
coq
MVP Visual C#
CoqBlog
*/
dimanche 26 octobre 2008 à 20:29:40 | Re : Index Dans SQL

crn_c21

Réponse acceptée !
Merci pour cette réponse, je vais approfondir!

le besoin se fait sentir car la base de données est parcouru par un programme VB6(dont nous n'avons plus les sources!! et développer par un bricoleur) où bcp de variables sont déclarées en Integer (donc limité à 32568 me semble-t-il)

Une solution transitoire m'est venu(sous la douche!! lol).Puisque je supprime bcp d'enregistrement,j'ai mis un trigger sur le Deleted qui insert l'Id dans une table annexe. Cette table reprend les Id "libres".

A tester pour voir le gain de temps

Encore merci


Cette discussion est classée dans : table, sql, libre, index, premier


Répondre à ce message

Sujets en rapport avec ce message

sql serveur et not null [ par jimmy69 ] Bonjour,Je debute sous sql serveur et bon j'ai un stress !J'ai cree une table que voici CREATE TABLE T_personnes ( pktest INTEGER IDENTITY(0,1) NOT if dans une procédure stocké ? [ par jesusonline ] Bonjour, je ne connais pas encore SQLj'ai une table articles qui a un champ ID et je voudrais une fonction stocké qui prend en paramètre un ID et qui sql tri?!!! [ par abari ] salut tout le mondej'ai un probléme de tri?!!! dans ma table les enregistrement sont stockées d'une facon des ordonnées comme suit:code nom prénom Ecrire une requette SQL pour affichier les 3 derniers enregistements dans une table Access [ par hotlines ] Bonjour,je voudrais écrire une requette SQL pour afficher  les 3 derniersenregistrement dans une table Access,pour être claire j'ai un site et je voud Droit sur une table sous sql serveur [ par jimmy69 ] Bonjour a tous,Voila je suis en train de me faire un p'tit projet sous sql serveur j'ai realise mon analyse entite relation..... j'ai aussi cree mes t creation d'index sous ms sql serveur ? [ par jimmy69 ] Bonjour a tous, Mes tables sont presque crees sous ms sql serveur 2000...J'avais lu un article sur l'utilite de la creation d' index ...sur les tables Nombre de ligne optimal d'une table? sql server 2000 [ par vindavid38 ] ZanTarBonjour est ce quelqu'un saurait s'il y a une taille optimale (en nombre de ligne) pour une table avec SQL server 2000.??merci bcp de rep@+ sql test si une table contient une foreign key [ par zobbiwan ] Bonjour. Je réalise une appli access asp où je connais le nom de certaines tables filles. Pour laisser une certaine liberté aux utilisateurs, je leur Requete SQL complexe [ par Mindiell ] Bonjour,J'ai un probleme de requete :J'ai une table contenant une societe n°8 par exempleJ'ai une table de personnes : 1, 2, 3, 4, etc...J'ai une autr Lecture de la description de chaque champs d'une table dans une base SQL server 2000 [ par lambdacrash ] Bonjour, Quelle requête dois-je exécuter pour obtenir la description d'un champs nommé contenu dans une table (SQL)? Merci


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,936 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales