Ahoj. Potřeboval bych poradit s optimalizací SQL dotazu. Mám dvě tabulky v jedné jsou články v druhé historie.
První tabulka články:
1 (id), Test (název)
v druhé mám historii:
1 (id), 1 (idclanku), 50 (udalost)
2 (id), 1 (idclanku), 100 (udalost)
3 (id), 1 (idclanku), 150 (udalost)
4 (id), 2 (idclanku), 50 (udalost)
5 (id), 2 (idclanku), 150 (udalost)
No a já potřebuju seznam přečtených a nepřečtených článků. Přečtené mám vyřešený:
SELECT clanek.nazev FROM clanek JOIN historie ON clanek.id=historie.idclanku WHERE historie.udalost=100 GROUP BY clanek.id ORDER BY clanek.id
Horší to je s nepřečtenejma, jelikož kdybych dal podmínku historie.udalost<>100, tak se mi tam dostane i článek 2, jelikož má i událost 50
Zatim to mám takhle, ale je to dost pomalý:
SELECT clanek.nazev FROM clanek
WHERE NOT EXISTS (SELECT id FROM historie WHERE clanek.id=historie.idclanku AND udalost=100))
Díky za radu,
Jarda
Optimalizace MySQL dotazu
- .:M@rt!n:.
- Level 2
- Příspěvky: 227
- Registrován: červen 11
- Pohlaví:
- Stav:
Offline
Re: Optimalizace MySQL dotazu
Každému článku bych ještě to databáze přidal jeden sloupec s boolean hodnotou - 1 nebo 0 (true false). A pak zjistit jestli byl už článek čtený (true) a z databáze pak načíst jenom ty které mají false...
MB MSI Z77A-G43 / procesor Intel Core i5-3570/ grafika MSI N660Ti PE 2GD5/OC / RAM Corsair 8GB KIT DDR3 1600MHz CL8 Vengeance / SSD disk OCZ Vertex 4 Series 128GB / zdroj Corsair CX600
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Optimalizace MySQL dotazu
podle čeho poznáš jestli si to přečetl? máš tam uživatele? IP adresy?
historii článků fakt nechápu, nemůžeš prostě udělat jednu tabulku na články a druhou na přečtený články?
historii článků fakt nechápu, nemůžeš prostě udělat jednu tabulku na články a druhou na přečtený články?
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Zpět na “Programování a tvorba webu”
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti