Kom ihåg mig?
Home Menu

Menu


Nested class - mysql problem

 
Ämnesverktyg Visningsalternativ
Oläst 2010-05-16, 18:41 #1
zilveer zilveer är inte uppkopplad
Medlem
 
Reg.datum: Jun 2006
Inlägg: 128
zilveer zilveer är inte uppkopplad
Medlem
 
Reg.datum: Jun 2006
Inlägg: 128
Standard Nested class - mysql problem

Hejsan,
jag hittade en väldigt bra sida som beskriver Nested class, den kan hittas på http://sslim7.com/

Jag har skapat tabellen:

Kod:
CREATE TABLE nested_category (
 category_id INT AUTO_INCREMENT PRIMARY KEY,
 name VARCHAR(20) NOT NULL,
 lft INT NOT NULL,
 rgt INT NOT NULL
);

INSERT INTO nested_category
VALUES(1,'ELECTRONICS',1,20),(2,'TELEVISIONS',2,9),(3,'TUBE',3,4),
(4,'LCD',5,6),(5,'PLASMA',7,8),(6,'PORTABLE ELECTRONICS',10,19),
(7,'MP3 PLAYERS',11,14),(8,'FLASH',12,13),
(9,'CD PLAYERS',15,16),(10,'2 WAY RADIOS',17,18);
Jag vill t.ex. ha ut en "single path" via denna nested class.
Koden jag använder är:
Kod:
SELECT parent.name
FROM nested_category AS node,
nested_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.name = 'FLASH'
ORDER BY parent.lft;

+----------------------+
| name                 |
+----------------------+
| ELECTRONICS          |
| PORTABLE ELECTRONICS |
| MP3 PLAYERS          |
| FLASH                |
+----------------------+
Som ni ser så får jag ut sökvägen till Flash via alla överkategorier.

Men MySQL hanterar inte denna fråga som optimal, jag får ut följande via explain queryn:
Kod:
id 	select_type 	table 	type 	possible_keys 	key 	key_len 	ref 	rows 	Extra
1 	SIMPLE 	node 	ref 	lft,name 	name 	62 	const 	1 	Using where; Using temporary; Using filesort
1 	SIMPLE 	parent 	ALL 	lft 	NULL 	NULL 	NULL 	10 	Range checked for each record (index map: 0x2)
Hur ska jag undvika "Using where; Using temporary; Using filesort" samt "Range checked for each record (index map: 0x2)"

Känns inte optimalt att använda nested class med MySQL, eller är det jag som missat något?
Tacksam för alla svar.
Mvh
zilveer är inte uppkopplad   Svara med citatSvara med citat
 


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 00:36.

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