WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   SQL-hjälp! (https://www.wn.se/forum/showthread.php?t=34692)

Lando 2009-01-25 21:12

Jag har ett allvarligt problem.

På en av mina sidor finns en tabell med upp mot 1,000,000 rader och jag måste rensa denna ibland för annars går hela sidan sjuuuuuukt segt.

Så min fråga är. Hur gör man för att lösa det? Man måste väll kunna ha 1,000,000 rader i en tabell? Google och dylikt är ju ha 1,000,000,0000,00000,000 (ni fattar poängen) utan några problem.

Problemet uppstår oftast när jag använder JOIN. Tex.

Kod:

SELECT u_name, g_date, g_text FROM guestbook
JOIN user ON user.u_id=guestbook.g_writer
LIMIT 10

Finns det nån bättre lösning än att använda JOIN?



Tacksam för svar! :)

WizKid 2009-01-25 21:14

Hur ser en explain ut för den queryn?

Lando 2009-01-25 22:11

Citat:

Originally posted by WizKid@Jan 25 2009, 22:14
Hur ser en explain ut för den queryn?
Menar du sånt här?

id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE wall ref w_wall,w_writer w_wall 4 const 232079 Using where; Using filesort
1 SIMPLE users eq_ref PRIMARY PRIMARY 4 xxxxx_se.wall.w_writer 1 Using where

?

rille77 2009-01-25 22:13

Min första tanke är att tabellera inte är indexerade korrekt.

Lando 2009-01-25 22:16

Citat:

Originally posted by rille77@Jan 25 2009, 23:13
Min första tanke är att tabellera inte är indexerade korrekt.
Vi har index men det är mycket möjligt att det är fel gjort.

Vi har index så här:

wall.w_id PRIMARY
wall.w_writer INDEX
wall.w_wall INDEX

Jag vet inte hur INDEX funkar då min kollega konfigurerat detta men om någon har något tipps så vore jag jätte tacksam :)

WizKid 2009-01-25 22:35

Eftersom inte wall finns med i query förstår jag inte hur de kan komma upp i EXPLAIN.

Lando 2009-01-25 22:38

Citat:

Originally posted by WizKid@Jan 25 2009, 23:35
Eftersom inte wall finns med i query förstår jag inte hur de kan komma upp i EXPLAIN.

Beror på att queryn bara var ett exempel.

WizKid 2009-01-25 22:40

Det är ju mycket lättare att hjälpa dig om du visar en query som du har problem med.

Lando 2009-01-25 22:49

Okey här kommer ett exakt utdrag:

SELECT
users.user_id,
users.user_nick,
users.user_born,
users.user_sex,
users.user_img_with,
users.user_img,
users.user_last_active,
users.user_class,
wall.wall_date,
wall.wall_text,
wall.wall_id

FROM wall JOIN users ON users.user_id=wall.wall_writer WHERE wall_wall='1700' AND user_active='1' ORDER BY wall_date DESC LIMIT 0, 20;
# Time: 090122 20:57:34
# Query_time: 2 Lock_time: 0 Rows_sent: 20 Rows_examined: 208956

WizKid 2009-01-25 22:55

Skapar du ett index som är på wall_wall och wall_date så kommer den gå mycket fortare.


Alla tider är GMT +2. Klockan är nu 13:57.

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