Kom ihåg mig?
Home Menu

Menu


Först lediga Id i mySQL

 
Ämnesverktyg Visningsalternativ
Oläst 2010-12-18, 16:23 #1
aelanders avatar
aelander aelander är inte uppkopplad
Medlem
 
Reg.datum: Dec 2004
Inlägg: 146
aelander aelander är inte uppkopplad
Medlem
aelanders avatar
 
Reg.datum: Dec 2004
Inlägg: 146
Standard Först lediga Id i mySQL

En tabell med ett Id enligt

CREATE TABLE MinTabell (
Id bigint unsigned NOT NULL AUTO_INCREMENT,
...
...


Efterhand har vissa poster raderats och det blir "hål" i följden av Id:en
Låt säga att Id ser ut så sorterade asc.
1
2
3
4
5
6
11
12
13
14
...
...
...

Finns det någon sql-sats som leter upp första lediga Id, i detta fall Id = 7 ?

Dessutom vill jag har svar på hur stort "hålet" är, dvs hur många oanvända Id det finns
iföljd från och med 7. I detta fall 4 st ( 7,8,9,10 )?


Två tillfällen som jag vill använda detta.
a. När en ny post ska läggas till så ska första lediga Id användas.
b. "Packa" ihop posterna så att alla "hål" försvinner.


på Serverversion: 5.0.51b så letar denna SQL-sats upp första lediga Id
select Id+1 as lastId from MinTabell where (select count(*) from MinTabell where Id = lastId) = 0 limit 1


Server version: 5.0.75
Server version: 5.1.42
Server version: 5.1.50
får jag
ERROR 1054 (42S22): Unknown column 'lastId' in 'where clause'


Varför göra detta nu då? Jo det kan man ju fråga sig.
Varför ska osten skäras på ett visst sätt? Varför ska ljusen på bordet så i exakta rader? osv
Fobier kanske ...

Har det någon betydelse ur effektivitetssynpunkt?
Kan tillägga att en tabell för närvarande innehåller drygt 68 milj poster.
aelander är inte uppkopplad   Svara med citatSvara med citat
 


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 01:54.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017