| MYSQL query help | ||
|---|---|---|
|
imp
4. mar 2008 16:03:29
Pridružen od: 11. apr 2007 894 objav 3 1 0 |
#11
$sql = mysqlquery("SELECT newsid FROM comment ORDER BY datum DESC"); ? |
|
|
twarlock
4. mar 2008 16:03:36
Pridružen od: 17. okt 2006 160 objav 0 0 0 |
||
|
Vini
4. mar 2008 16:03:39
Pridružen od: 1. sep 2006 6612 objav 5234 611 56 |
#13
Nekaj v tem stilu, ampak se zavedaj, da je to blazno neelegantna in pocasna resitev. Vsekakor malo prestudiraj tukaj indekse, o podobni temi (uporaba MAX() v kombinaciji z indeksi) sem pred kratkim pisal na mojem blogu. Bi ti pa vsekakor svetoval, da razmisljas malo o kaksni reduncanci podatka o datumu zadnjega komentarja v tabeli novic. Zadevo lahko resis tudi tako, da se samodejno azurira, poglej si malo triggerje. |
|
|
twarlock
4. mar 2008 17:03:08
Pridružen od: 17. okt 2006 160 objav 0 0 0 |
#14
kaj pa tkole... SELECT * FROM news AS n LEFT JOIN comment AS c ON (n.newsid=c.newsid) ORDER BY c.datum DESC LIMIT 10 sevede po predpostavki, da je tabela z novicami: "news" in, da je index: "news_id" |
|
|
Vini
4. mar 2008 21:03:57
Pridružen od: 1. sep 2006 6612 objav 5234 611 56 |
#15
twarlock, tole pomoje zanj ni uporabno. Kaj lahko se zgodi, da ima le ena novica zadnjih deset komentarjev, torej bo rezultat te poizvedbe 10 enakih novic. Ce sem fanta prav razumel, ravno tega noce... |
|
|
twarlock
4. mar 2008 22:03:57
Pridružen od: 17. okt 2006 160 objav 0 0 0 |
#16
eh ja zabluzu blush bom tvoj query mal popravu...
|
|
|
Vini
5. mar 2008 08:03:00
Pridružen od: 1. sep 2006 6612 objav 5234 611 56 |
#17
Ja, vsekakor, tole bi tudi delovalo. Je pa v obeh primerih query lahko blazno pocasen, sploh ob veliki kolicini podatkov, seveda. Nekako se vedno priporocam resitev z zapisovanjem podatka o datumu zadnjega kometarja v tabelo novic. |
|
|
blackmamba
5. mar 2008 08:03:57
Pridružen od: 4. mar 2008 559 objav 392 25 11 |
#18
Super!! Uporabil sem twarlock-ovo rešitev in deluje. Komentarjev je zaenkrat še malo, tako da zaenkrat deluje hitro. Se pa strinjam da lahko zadeva postane požrešna in počasna. Vini: Hvala za nasvet, si bom pogledal triggerje. Če pravilno razumem je to neke vrste procedura, ki se izvede ob vpisu vsakega komentarja in sicer zapiše id zadnjega komentarja v tabelo novic. Potemtakem bi bil query lepši, če bi novica imela 'id' zadnjega komentarja SELECT n.newsid FROM news AS n, comments AS c LP |
|
|
Vini
5. mar 2008 12:03:24
Pridružen od: 1. sep 2006 6612 objav 5234 611 56 |
#19
blackmamba, tako je, na tabelah lahko dolocis triggerje, ki se izvedejo pred/po insertu, updatu ali deletu. Za tovrsten query bi ti vsekakor svetoval, da si v tabelo novic zapisujes datum zadnjega komentarja, ker bos lahko tabelo po tem podatku tudi indeksiral in tako omogocil queryju, da za sortiranje podatkov uporabi indeks, kar je hitreje kot uporaba filesorta. Da se ne ponavljam, o tem sem pisal na blogu, pa si rajsi kar tam preberi podrobno razlago. Povezava na objavo je v mojem prvem odgovoru v tem threadu. |
|
|
blackmamba
5. mar 2008 13:03:11
Pridružen od: 4. mar 2008 559 objav 392 25 11 |
||