Pytanie o poprawna kwerende w mysql 5 
 
Pytanie o poprawna kwerende w mysql 5
Zobacz wiadomo¶ci
 
Cytat
A gdyby tak siê wedrzeæ na umys³ów górê, / Gdyby stan±æ na ludzkich my¶li piramidzie, / I przebiæ czo³em przes±dów chmurê, / I byæ najwy¿sz± my¶l± wcielon±. . . Juliusz S³owacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Pytanie o poprawna kwerende w mysql 5



DjAvX - 14-12-2006 16:09
Pytanie o poprawna kwerende w mysql 5
  Witam,
mam takie zapytanie:

SELECT count(mag.id) AS total
FROM ebsmagazyn as mag, data AS td,links as lnk1,links as lnk2
WHERE (mag.bitflags & 2 = 0) and (mag.typ=2) and (mag.id=td.id) and
(td.Vd='A T') and
(lnk1.srcid=mag.id) and (lnk1.srctype='2') and (lnk1.dsttype='1') and
(lnk1.dstid='2340') and
(lnk2.srcid=mag.id) and (lnk2.srctype='2') and (lnk2.dsttype='100') and
(lnk2.dstid='1643')

wszystko pieknie ale o ile w mysql 4 dzialalo jak powinno o tyle w mysql 5
dubluje rekordy... gdzie jest b??d??
jak to napisac zeby bylo w miare szybkie?

P.S. co jest szybsze: uzycie aliasa i dodanie warunkow w where czy uzycie
LEFT JOIN ?

--
DjAvX





=?UTF-8?B?RmlsaXAgUmVtYmlhxYJrb3dza2k=?= - 14-12-2006 16:09

  DjAvX napisa??(a):
> Witam,
> mam takie zapytanie:
>
> SELECT count(mag.id) AS total
> FROM ebsmagazyn as mag, data AS td,links as lnk1,links as lnk2
> WHERE (mag.bitflags & 2 = 0) and (mag.typ=2) and (mag.id=td.id) and
> (td.Vd='A T') and
> (lnk1.srcid=mag.id) and (lnk1.srctype='2') and (lnk1.dsttype='1') and
> (lnk1.dstid='2340') and
> (lnk2.srcid=mag.id) and (lnk2.srctype='2') and (lnk2.dsttype='100') and
> (lnk2.dstid='1643')
>
> wszystko pieknie ale o ile w mysql 4 dzialalo jak powinno o tyle w mysql 5
> dubluje rekordy... gdzie jest bÂ?Â?d??
dziwne. mog??by?? pokazaÄ? SHOW CREATE TABLE dla tych tabel?
i co?? wiÄ?cej powiedzieÄ? o tym dublowaniu? co siÄ? powiela?

> jak to napisac zeby bylo w miare szybkie?
>
> P.S. co jest szybsze: uzycie aliasa i dodanie warunkow w where czy uzycie
> LEFT JOIN ?
select * from mag,td where (mag.id=td.id)
_nie_ jest r??wnowa??ne
select * from mag LEFT JOIN td on (mag.id=td.id)

natomiast je??li usuniesz LEFT i zostawisz tylko JOIN (co jest synonimem dla
INNER JOIN) to obie konstrukcje sÄ? r??wnowa??ne

nie wiem co jest szybsze w mysql 5. pewnie zale??y od danych :)

F.




keczerad - 14-12-2006 16:09

  Filip Rembia??kowski napisa??(a):

> natomiast je??li usuniesz LEFT i zostawisz tylko JOIN (co jest synonimem dla
> INNER JOIN) to obie konstrukcje sÄ? r??wnowa??ne
>
> nie wiem co jest szybsze w mysql 5. pewnie zale??y od danych :)

inner jest szybszy, moim zdaniem szybkosc w niektorych przypadkach jest
drugorzedna, natomiast jest zasadnicza roznica miedzy INNER a LEFT,
INNER nie zwroci rekordu a LEFT zwroci w przypadku jesli warunek
zlaczenie nie zostanie spelniony.

--

keczerad

http://www.e-mo.com.pl
sklep w (X)HTML




DjAvX - 14-12-2006 16:09

 
> inner jest szybszy, moim zdaniem szybkosc w niektorych przypadkach jest
> drugorzedna, natomiast jest zasadnicza roznica miedzy INNER a LEFT,
> INNER nie zwroci rekordu a LEFT zwroci w przypadku jesli warunek
> zlaczenie nie zostanie spelniony.
yyy
czyli jesli warunek podany w LEFT sie nie spelni zostanie zwrocony rekord a
a w INNER odwrotnie?
--
DjAvX





=?UTF-8?B?RmlsaXAgUmVtYmlhxYJrb3dza2k=?= - 14-12-2006 16:09

  DjAvX napisa??(a):
>> inner jest szybszy, moim zdaniem szybkosc w niektorych przypadkach jest
>> drugorzedna, natomiast jest zasadnicza roznica miedzy INNER a LEFT,
>> INNER nie zwroci rekordu a LEFT zwroci w przypadku jesli warunek
>> zlaczenie nie zostanie spelniony.
> yyy
> czyli jesli warunek podany w LEFT sie nie spelni zostanie zwrocony rekord a
> a w INNER odwrotnie?
problem wpisaÄ? w google "sql join"?
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?= [mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?= [MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?= [mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?= [MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?= [MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?= Gdzie MySQL 4.1, a gdzie 5.0? [MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?= [MS SQL] "set names" (mySQL) w MS SQL [mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • misida.pev.pl
  • Cytat

    Decede mihi sole - nie zas³aniaj mi s³onca.
    Gdy kogo¶ kochasz, jeste¶ jak stworzyciel ¶wiata - na cokolwiek spojrzysz, nabiera to kszta³tu, wype³nia siê barw±, ¶wiat³em. Powietrze przytula siê do ciebie, choæby by³ mróz, a ty masz w sobie tyle rado¶ci, ¿e musisz j± rozdawaæ woko³o, bo siê w tobie nie mie¶ci
    Hoc fac - tak czyñ.
    A tergo - od ty³u; z ty³u.
    I czarne w³osy posiwiej±. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com