Avatar billede lone_a_p Praktikant
12. oktober 2006 - 18:50 Der er 14 kommentarer og
2 løsninger

Foreslå tabelstruktur i phpMyAdmin

Min mysql-database er version: MySQL 4.0.21
Min PhpMyAdmin: 2.6.0-pl3

Når jeg vælger en tabel i phpMyAdmin, er der et link der hedder "Foreslå tabelstruktur". Er der nogen, der ved, om det er meget energi/ydeevne, der spildes ved at have en "forkert" struktur. F.eks. hvis datatypen på et felt bliver foreslået til int(4), og jeg har sat den til int(11).

Jeg kan se, at der er mange steder, hvor tabellerne analyseres til at kunne optimeres. Men hvor stor en betydning har dette for databasens ydeevne?

Jeg har i øjeblikket tabeller, der fylder op til 500 KB (de fleste er selvfølgelig mindre).

Anyone who knows?

Mvh Lone
Avatar billede coderdk Praktikant
12. oktober 2006 - 19:05 #1
En int er en int - tallet i parentes har udelukkende indflydelse på visningen af tallet - med varchar osv er det naturligvis noget andet ;)
Avatar billede arne_v Ekspert
12. oktober 2006 - 19:06 #2
int(4) versus int(11) er ligegyldige

andre kan have stor betydning
Avatar billede lone_a_p Praktikant
12. oktober 2006 - 19:12 #3
den siger også TINYTEXT i stedet for TEXT
og VARCHAR(64) i stedet for VARCHAR(250)

har de så betydning? - og hvis ja, stor betydning?
Avatar billede coderdk Praktikant
12. oktober 2006 - 19:21 #4
Det har betydning, tinytext kan have 255 bogstaver hvor text kan have 65.535, varchar(64) betyder max 64 bogstaver mod dine 250 før...
Avatar billede arne_v Ekspert
12. oktober 2006 - 19:40 #5
jeg ville aldrig bruge TINYTEXT - VARCHAR(255) er langt bedre

det fylder ikke mere at gemme 'ABC' i en VARCHAR(255) end i en VARCHAR(64) - du skal
derfor kun vaelge VARCHAR(64) hvis du opfatter det som en fejl hvis data er laengere
end 64 tegn
Avatar billede lone_a_p Praktikant
12. oktober 2006 - 21:27 #6
men hvis der ikke er ret meget forskel? ... giver det mening?

så kunne de jo lige så godt bare have valgt at varchar altid er 255 som standard osv.?

Eller også er der noget jeg har misforstået?
Avatar billede arne_v Ekspert
12. oktober 2006 - 21:43 #7
nej - du kan jo oenske at det er umuligt at indsaette mere end 65 tegn
Avatar billede lone_a_p Praktikant
12. oktober 2006 - 21:47 #8
ja ok - men det giver ikke en masse spildplads i databasen, når man alligevel ikke anvender de 255 tegn, som man egentlig har skrevet.

Er lige ved at optimere databasen - og har f.eks. fået fjernet det der "overhead" ved at sætte flueben ved de tabeller det er galt med og så trykke optimer. (i phpMyAdmin)
Avatar billede lone_a_p Praktikant
12. oktober 2006 - 21:58 #9
Der er en side på mysql.com:

http://dev.mysql.com/doc/refman/5.1/en/data-types.html

Men jeg får desværre ikke så meget ud af den - blot til andre, der evt. dumper ind på denne tråd nu eller senere.
Avatar billede arne_v Ekspert
13. oktober 2006 - 00:54 #10
nej - VARCHAR gemmes altid som 1 byte med længden og det faktisk antal data bytes

CHAR fylder efter max størrelsen
Avatar billede lone_a_p Praktikant
13. oktober 2006 - 09:06 #11
OK, jeg skal bare lige være helt sikker så:

Dvs. det vil overhovedet ikke give nogle fordele i databasens ydelse ved at jeg ændrer nogle datatyper. (jeg bruger enum, int(11), varchar(250), text ... det er vist dem).

Heller ikke mht unsigned og det? (jeg kommer aldrig op på max alligevel)

Mvh Lone
Avatar billede arne_v Ekspert
13. oktober 2006 - 13:23 #12
du skal vælge unsigned hvis dine data af nayur ikke kan være negative

du skal vælge mindre end 250 for VARCHAR hvis data af natur ikke kan være så store

når du skal vælge data type så er prioriteringen:
1) at valide data kan være i data typen
2) at invalide data ikke kan være i data typen
3) plads forbruget
Avatar billede lone_a_p Praktikant
13. oktober 2006 - 13:49 #13
Ok, jeg tror bare jeg lader det være som det er. For der er ikke nogen grænse på hvor store tallene må være ... men f.eks. brugerid løber jo ikke op i 1 mio ;-) (eller nær)

tak for al responsen, vil du ik give et svar, så skyder jeg pointene over :-)

Mvh Lone
Avatar billede arne_v Ekspert
14. oktober 2006 - 02:04 #14
tallene på INT har som sagt ingen praktisk betydning overhovedet, som vi startede med

jeg kan fgodt ligge et svar, men jeg synes absolut at coderdk også har fortjen point,
fordi han var faktisk først med svaret på det oprindelige spørgsmål !
Avatar billede lone_a_p Praktikant
14. oktober 2006 - 12:02 #15
Det er ok, jeg venter på svar fra ham også så ;)
Avatar billede coderdk Praktikant
14. oktober 2006 - 12:47 #16
hehe ok :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester