begin process at 2012 02 11 18:05:57
  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

Récupereration par code de l'index et de la clé d'une table SQL / Access [ par FNIAMKE ] Bonsoir Mme/Mr. Comment récuperer l'index et la clé d'une table (SQL ou access) dans une réquête ou par code. Merci de m'apporter assistance. NIAM script sql mise à jour d'une table [ par eva12345 ] Bonjour, Je souhaiterais réaliser le script sql suivant : j'ai une table "Type" qui possède deux colonnes un Id et un nom 1 " Boulanger" 2 " cha Trigger et @@identity dans sql server [ par grapevine ] Bonjour à tous , Je me pose une question assez pointue et j'attends que les spécialistes de sql server se manifestent :Imaginer que je crée une table SQL/VBA - Regrouper donné en fonction d'une autre table [ par Darm ] Bonjour à tous, il est très rare que je ne trouve solution sur ce forum, mais là je dois dire je suis complètement largué. Je ne sais même si il exist requete sql [ par ddove53 ] Slt, j'ai une table A et je veux recupérer les noms (table NOM), lesprenoms(table Prenom) et les Emails (table Email) des utilisateurs. Mon probléme Demande pour une requête SQL URGENT [ par zeydoun ] Bonjour, J'ai 2 Tables publications et auteurs et je veux ajouter des champs dans la table publications o SQL Verifier si un Index Existe pour un table donnée [ par jam01 ] Bonjour, Je développe un programme en .Net qui crée une table et un index sur celle ci. J'ai trouver comment ne créer la table que si elle n'existe pa REQUETE SQL [ par Eros2007 ] Bonjour tout le monde. voila ma question: j'utilise une requette sql pour pouvoir faire un preview et imprimer par la suite les enregistrements des cl SQL SERVER 2008 [ par vargas101 ] Bonjour à tous j'ai un petit problème je dois coder un select qui permet d'obtenir l'annuaire d'une entreprise. le resultat est presenté : nom, preno Exporter une table(sql server) dans un fichier xml aprtir de c sharp [ par valantino1 ] Bonjour , Est ce qq'un possede une idée comment exporter un table sql server dans une fichier XML avec le c sharp ? j'ai pensé à la sérialisation de


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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 : 1,763 sec (3)

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