![]() |
iets in de zin van select * from blaat where pid=3
en alle tekens tellen, en dan weet je hoeveel bytes je hebt |
![]() |
Verwijderd
Dr HenDre schreef op 02-04-2005 @ 20:41 :
iets in de zin van select * from blaat where pid=3 en alle tekens tellen, en dan weet je hoeveel bytes je hebt Maar is ver weg van prettige oplossing.. Het gaat namelijk om +/- 50 verschillende tabellen ![]() |
![]() |
Verwijderd
datatypes opvragen en bij varchars gemiddelden nemen.
|
![]() |
Verwijderd
eddie schreef op 03-04-2005 @ 12:44 :
datatypes opvragen en bij varchars gemiddelden nemen. ![]() |
![]() |
kent MySQL geen gemiddelde functie? (zoja: aantal rows*gemiddelde lengte=size) Dan is duurt het nog even voordat je query klaar is...
__________________
$karma++;
|
![]() |
Verwijderd
Zoals ik al zei, de regels verschillen van grote..
Er is dus geen gemiddelde te berekenen... |
![]() |
Verwijderd
de regels kunnen niet wisselen van grootte; je hebt per regel een maximale grootte (=max van alle datatypen).
int + int + varchar(30 ) = 34 bytes max per regel. |
![]() |
Verwijderd
En wat als er velden als type 'text' zijn, en de ene regel 2 woorden bevat, en de volgende 200.
![]() Overigens is de berekening maar 1x per dag op een nachtelijk tijdstip. |
![]() |
Verwijderd
als het goed is, een een text max 4 bytes in de tabel. De database maakt een apart bestand waar de inhoud van de text wordt opgeslagen (met een 4-byte adres).
|
![]() |
Verwijderd
En jji denkt dat een HTTP account access heeft tot de MySQL bestanden?
![]() |
![]() |
********** schreef op 03-04-2005 @ 15:27 :
Overigens is de berekening maar 1x per dag op een nachtelijk tijdstip. ![]()
__________________
Onderuitgezakt in de koffiehoek van het zorgcentrum zit Sieb met volle teugen na te genieten van de Tweede Wereldoorlog. Arnela is de liefste! <3
|
![]() |
Verwijderd
Gimme more beer schreef op 03-04-2005 @ 17:56 :
Dan kun je altijd nog regel voor regel gaan uitlezen natuurlijk ![]() ![]() |
![]() |
Verwijderd
Klein beetje hulp:
http://dev.mysql.com/doc/mysql/en/st...uirements.html VARCHAR and the BLOB and TEXT types are variable-length types. For each, the storage requirements depend on the actual length of column values (represented by L in the preceding table), rather than on the type's maximum possible size. For example, a VARCHAR(10) column can hold a string with a maximum length of 10. The actual storage required is the length of the string (L), plus 1 byte to record the length of the string. For the string 'abcd', L is 4 and the storage requirement is 5 bytes.
Each BLOB or TEXT value is represented internally by a separately allocated object. This is in contrast to all other column types, for which storage is allocated once per column when the table is opened.
http://dev.mysql.com/doc/mysql/en/st...-overview.html TEXT
A TEXT column with a maximum length of 65,535 (2^16 − 1) characters. Laatst gewijzigd op 03-04-2005 om 19:29. |
![]() |
Verwijderd
Hoe de manier van opslaan is wist ik al.
Ik zoek alleen een efficiente manier om het uit te lezen ![]() (Of begrijp ik de hint niet?) |
![]() |
Verwijderd
********** schreef op 03-04-2005 @ 21:38 :
Hoe de manier van opslaan is wist ik al. Ik zoek alleen een efficiente manier om het uit te lezen ![]() (Of begrijp ik de hint niet?) ![]() phpMyAdmin kan toch ook de grootte van de (inhoud van de) tabel uitlezen? |
![]() |
Verwijderd
eddie schreef op 03-04-2005 @ 22:54 :
![]() phpMyAdmin kan toch ook de grootte van de (inhoud van de) tabel uitlezen? ![]() |
![]() |
Verwijderd
Kolommen wijzigen is helaas geen optie.
Grouperen inderdaad per 'pid'. Maar het formaat per 'pid' wil ik graag weten, niet de totale tabel formaat. |
![]() |
De grote database
De grootte van een database ![]()
__________________
Per undas adversas (tegen de stroom in)
|
![]() |
Verwijderd
********** schreef op 03-04-2005 @ 23:17 :
Kolommen wijzigen is helaas geen optie. Grouperen inderdaad per 'pid'. Maar het formaat per 'pid' wil ik graag weten, niet de totale tabel formaat. select sum( 4 + 4 + len( title ) + len( text ) ) from tabel group by pid |
![]() |
Verwijderd
********** schreef op 04-04-2005 @ 13:10 :
Dat valt dus niet onder effectief. Dan moet ik voor ieder tabel apart de tabel apart die query maken en uitlezen.. (50 tabellen * 25 cellen * 5000 regels+oplopend) De reden van dit topic is juist om tot een echte oplossing te komen en niet iets als wat jij zegt, want dat had ik zelf ook al bedacht ![]() Allres regel voor regeld uitlezen is echt de aller laatste optie ![]() - functies om alle tabellen op te vragen uit een database - functies om alle kolommen (inclusief type en lengte) op te vragen van een tabel Combineer de bovenste twee en bouw een dynamisch statement. |
![]() |
Verwijderd
dat kan table status wel..
maar ik vind het allemaal toch niet echt effectief ![]() |
![]() |
Ja, hallo, je kan wel zoveel niet effectief vinden. Ik gok dat er geen andere oplossingen zijn dan degenen die er tot nu toe zijn aangedragen. Je probleem is dat je aan de hand van gegevens IN een tabel gegevens OVER die tabel probeert te bepalen; daar is SQL simpelweg niet op berekend. Het is een abstraction, en hoewel bij tijd en wijle leaky is het ook weer niet zo leaky. Je zult dus genoegen moeten nemen met de opties die tot nu toe zijn voorgesteld, of je moet gewoon (en dat is misschien verstandiger) de verschillende dingen met een ander gid in een andere table of zelfs in een andere database opslaan.
__________________
Slechts beschikbaar via naamzoek/privebericht.
|
![]() |
Verwijderd
eddie schreef op 04-04-2005 @ 08:51 :
uuh... select sum( 4 + 4 + len( title ) + len( text ) ) from tabel group by pid En voor de geintereseerde: http://dev.mysql.com/doc/mysql/en/st...uirements.html |
![]() |
Verwijderd
Van de ongeveer 870kb die de database bevat (volgens phpMyAdmin -> show) krijg ik maar 730kb geteld..
Iets gaat er nog niet goed ![]() |
![]() |
Verwijderd
Manuzhai schreef op 07-04-2005 @ 22:57 :
Mogelijkerwijs mis je de indices? Check even hoe groot de .FRM, .MYD en .MYI files zijn. Het zou best kunnen dat je hiermee alleen de .MYD file hebt. ![]() Maar ik ben net achter gekomen dat een aantal vars leeg zijn die gewoon gevuld moeten zijn... Dus er zit nog een query fout ![]() Edit: ik mis van iedere tabel een aantal b's ![]() Edit2: het gaat overigens over MySQL3 (helaas niet 4). Laatst gewijzigd op 07-04-2005 om 22:43. |
![]() |
Verwijderd
Ik miste trouwens inderdaad de indices
![]() |