Autor Zpráva
Radim
Profil *
Ahoj. Chtěl bych navišovat sloupec s id, pokud možno automaticky (autoincrement) ale potřebuji to tak, aby to číslo přiřazoval od nejnižší možé hodnoty. když vymažu záznam. např. v tabulce s users , tak aby místo něj mohl být přidán jiný se stejným číslem automaticky. Zatím jsem to řešil s tabulkou kam zapisuji uvolněná id a z těch se pak může přiřazovat, ale přijde mi to zbytečně složité.

Dík za radu.

zároveň prosím o zodpovězení otázky, jestli v databázi nutně potřebuju používat primar key, zvlášť při inzerci, ... používám tabulky users a inzeraty. Zabiraji tyto indexi nějaké specifické místo?

Dík za odpově|´d.
Radim
Hugo
Profil
Radim

1) Zopakuj si pravopis

2) Muzes po smazani zaznamu upravit hodnotu AUTO_INCREMENT tabulky.

3) Primarni klic je dulezity pro jednoznacnou identifikaci zaznamu, proto je vhodne ho v tabulce mit. Samozrejme musi byt ulozen na disku, takze to stoji nejake to misto.
Radim
Profil *
Ale jednoznačnou identifikaci nahrazuji tím, že kontroluji záznam zda již neexistuje....
jak mám upravit tu hdnotu autoinctrement
Hugo
Profil
ALTER TABLE `table` AUTO_INCREMENT=20

Treba pri vypisu jednoho zaznamu ti bude primarni klic chybet.
tiso
Profil
Radim
Mne príde zbytočne zložité to čo požaduješ... Vysvetli mi kvôli čomu chceš mať ID s vyplnenými dierami? Aké to má opodstatnenie?
Radim
Profil *
Chtěl jsem ušetřit místo. I kdžyy teď si tak říkám, že jeden byte pro biginteger by mě asi nezabyl...
Hugo
Profil
Pokud ocekavas takovy hukot, ze potrebujes biginteger, tak je toto reseni blbost, protoze bude casto dochazet ke konfliktum.
Hugo
Profil
Radim

A jses si skutecne jisty, ze tam ten bude tolik zaznamu? Protoze pokud jo, tak by to chtelo na navrh db (indexy, vztahy meza tabulkami, atd.) nekoho zkusenejsiho. A hlavne MySQL neni idealni db na tak velke tabulky.
Radim
Profil *
Chci tam mít 500-1000 záznamů a mělo by se to vejít do 1MB.
Ale na primar key se mi plýtvat nechce. Myslím, že je to zbytečné.
Radim
Profil *
ALTER TABLE `table` AUTO_INCREMENT=20
Tak tohle způsobí, že to bude navyšovat od 20, ale nepřepíše žádný starý zázna.
tzn pokud existuje 20, skočí na 21, atd... správně?
Hugo
Profil
Radim

Tak proc tam proboha chces rvat bigint? Na to ti staci smallint.

Zmenou hodnoty auto_increment nic neprepises.
Radim
Profil *
Ale zas jsem se spletl. Mám tam smallint. A s tím si chci vystačit. Kdybych tam nedal to auto_inctrement=20 (např.) tak bych tam musel dát indeger.
tiso
Profil
Podľa mňa šetríš na nesprávnom mieste... Pokiaľ nebudeš často mazať záznamy (neviem načo to má byť tabuľka) tak Ti to vystačí. Pokiaľ sa budeš blížiť ku hranici, tak si raz preindexuješ tabuľku a máš...
Hugo
Profil
Radim

Podivej se na rozsah smallint, pokud mu nastavis atribut unsigned, tak s tim imho vystacis (pokud predpokladas 1000 zaznamu).
Radim
Profil *
Počkej. Tri uživatele budou inzerovat a rušit inzeráty. Takže 400 inzerátu za měsíc, 1200 se vystřídá za tři měsíce. Staré se smažou, ale id je na 1200
Hugo
Profil
smallint unsigned ma rozsah 0 - 65535, to mas na 13 let.

http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
Radim
Profil *
numeri type znám tu stránku používám
ale stejně to ve mně nevzbuzuje důvěru. A je to jinak nějaký problém to alter ... auto_incement=... jestli to třeba vadí, když by to uživetelé změnili např. 5x-10x za den? Proč bych to vlastně neměl používat...
MzM
Profil *
Bavíte se o ptákovinách, když tam dáš int (to jsou tuším 4 byte, ale je to podle nastavení v systém) tak máš rozsah naprosto dostatečný, klidně si tam nech bigint, vzhledem k terabytovým kapacitám disku to nepoznáš ani ty ani databáze.
Pokud tam chceš mít 1000 záznamů tak to znamená navíc 4kB, to je taková malina, že se tím fakt nikdo zabývat nebude.
Navíc mám pocit, že small int se může převádět a tím se zpomalí celý výpočet.
Když už nepočítám nesmyslné hlídání indexu, aby v něm nebyly díry, které zabere tolik výpočetního výkonu, že je to až ošklivé. Prostě je to naprosto zbytečné a hodí se to max jako vyučovací příklad, že to jde.

Nepoužívání indexu může taky běh výběrů z tabulky hodně zpomalit. Ale to jen v případě, že z ní vybíráš jenom něco. To asi nebude tvůj případ...
Něco si o db přečti. Za rok se tomu zasměješ.
Ale nezoufej, já jsem nazačátku dělal taky hrozné věci. :-D
Toto téma je uzamčeno. Odpověď nelze zaslat.

0