/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
MySQL: Optimering af simpel select
Fra : Niels Andersen


Dato : 02-11-01 22:14

Jeg har en temmelig simpel select, som jeg synes tager alt for lang tid.

Felt-navnene har jeg skiftet ud med felt-typen. Feltet "id" hedder altså
fx. "int" her.

SELECT int, varchar, enum
FROM table
WHERE enum='N'
ORDER BY varchar
LIMIT 0,20;

Det, der tager tid er tilsyneladende WHERE-delen. Hvis jeg erstatter den
med "WHERE 1", så går det mange gange hurtigere. Men hvordan kan jeg
optimere den? Skulle jeg bruge en tinyint i stedet, og så bruge 1 og 0 i
stedet for 'Y' og 'N'?

int er primary key
Derudover er der index på både enum og varchar.

Og så er der en hulens masse andre felter (22 ialt), og der er både int,
varchar, text, mediumtext, float og enum.

En EXPLAIN giver dette:
table: table
type: range
possible_keys: enum
key: enum
key_len: 2
ref:
rows: 11216
Extra: where used; Using filesort

Det nærmeste jeg lige kan se skulle være et problem, skulle være det
store antal rækker. Menøh... Så stort et antal er det jo heller ikke,
10-20.000 rækker er da ikke nok til at MySQL får bare de mindste
problemer?
Jeg kan heller ikke få det til at passe med at der skulle være meget
data i tabellen, der er ca. 7-8 mb.

--
Mvh.

Niels Andersen



 
 
camraz (10-11-2001)
Kommentar
Fra : camraz


Dato : 10-11-01 14:17

Hvor mange indekser har du i tabellen?
Hvor mange bytes fylder dine indekser?
Hvilken slags tabeller bruger du?

Dit problem kan være at du har for mange eller for store indekser
i forhold til den tabeltype (MyISAM, ISAM osv.) som du bruger.

Antallet af poster er i hvert fald ikke noget problem. Jeg arbejder til
daglig
med tabeller på op mod 3 mio. poster uden at det går ud over hastigheden.

Begræns antallet af indekser til det der er nødvendigt.
Kør en grundig reparation af tabellen med (my)isamchk.

Hjælper det?

/Carsten
www.tele0.com - Online Telekort og Erhvervsinformation



Søg
Reklame
Statistik
Spørgsmål : 177554
Tips : 31968
Nyheder : 719565
Indlæg : 6408852
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste