- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- iPhone topik
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Huawei Watch GT 6 és GT 6 Pro duplateszt
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- Xiaomi 15T Pro - a téma nincs lezárva
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Mobil flották
- Samsung Galaxy Z Fold5 - toldozás-foldozás
- Milyen okostelefont vegyek?
Új hozzászólás Aktív témák
-
Taci
addikt
válasz
sztanozs
#5140
üzenetére
Ha az általad írt lekérdezés által visszaadott össz-elemszámot szeretném megtudni (a belső limit nélkül - hogy később tudjak vele számolni, a belső limit meddig nyújtózkodhat - szóval a belső Select-et ezért veszem ki, plusz ugye nem kell rendezni sem (Order By), és a végén lévő Limit sem kell)), akkor jelen tudásom szerint azt így kérdezném:
SELECT COUNT(*) AS result_count FROM(SELECT i.item_id FROM items AS iINNER JOIN items_categories AS c ON i.item_id=c.item_idWHEREc.category_id NOT IN (1,3,13,7,20) ANDi.item_id NOT IN (117,132,145,209,211)GROUP BY i.item_id) AS tVan esetleg ennek hatékonyabb, gyorsabb, jobb módja?
Ezt találtam még:
SELECT COUNT(DISTINCT item_id) AS result_count FROM(SELECT i.item_id FROM items AS iINNER JOIN items_categories AS c ON i.item_id=c.item_idWHEREc.category_id NOT IN (1,3,13,7,20) ANDi.item_id NOT IN (117,132,145,209,211)) AS tItt elvileg a Distinct kiváltja a Group By-t.
Viszont sajnos Count-hoz a phpMyAdmin nem ír lekérdezési időt, így nem tudom, melyik a gyorsabb. Vagy jobb.
Ebben kérnék tanácsot.
Köszönöm. -
Taci
addikt
válasz
sztanozs
#5140
üzenetére
Na azért ez így hasít...
0.0096 secondsEzek szerint akkor nem kell "archiválni"? Akármekkorára is dagad a tábla, jobb egyben tartani? Vagy van egy határ valahol, ahol már szeletelni kell?
GROUP BY i.item_id, i.item_date
Itt miért kell az _id után a _date is, ha csak azért van a Group By, hogy egy-egy _id csak egyszer szerepeljen? (Csak szeretném megérteni.)Illetve még egy dolog jár ezzel a lekérdezéssel kapcsolatban a fejemben:
Ez egy nagyon jó és gyors lekérdezés. Azt hogyan lehetne legoptimálisabban megoldani, hogy ha a visszaadott rekordok száma kisebb, mint 4, akkor megnézze LIMIT 1000 helyett 2000-re is? Mert ha 2000-ben a talált rekordok száma nagyobb egyenlő mint 4, akkor onnan kell az eredmény, és akkor a következő görgetős lekérdezéshez is már a 2000-et kell használni, mert az 1000 nem volt elég.
Ehhez elég gyors ez a lekérdezés már, úgy gondolom, hogy kettő egymás után is beleférjen, ha kell.Hogy a gyorsabb/jobb?
1) Futtatom a query-t, aztán számoltatom php-ben a rekordok számát, és ha kisebb, mint 4, akkor jöhet az újabb query 2000-re?
2) Vagy előbb "üresen" csak egy Count, és az eredmény függvényében a valós (rekordokat visszaadó) lekérdezés?
3) Vagy van valamilyen COUNT-os utasítás (esetleg feltételes is) hozzá, amivel ezt még SQL-oldalon meg lehetne oldani? Ami akár egy lekérdezésen belül visszaadja, hogy az 1000-es limittel mennyi rekordot adna vissza, és ha 4-nél kevesebbet, akkor egyből futtatja 2000-re?Egy Count biztosan sokkal gyorsabb, mint az összes érintett mezőt visszaadni, és azt számoltatni, csak ezért jutott eszembe a kérdés.
Új hozzászólás Aktív témák
- Samsung kuponkunyeráló
- Gyárátalakításokkal kaszálna nagyott a memóriapánikból a Samsung
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Melyik tápegységet vegyem?
- SSD kibeszélő
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- iPhone topik
- Geri Bátyó: Agglegénykonyha 14 – Kések, késélezés
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Kertészet, mezőgazdaság topik
- További aktív témák...
- AOC Q27G3XMN 27" 180Hz 1440p gamer monitor
- Iphone 13 mini mobiltelefon eladó
- Ryzen 5 5500 (ÚJ, 2 ÉV GARI) - 16 GB DDR4 3200 MT/s CL16 - 1 TB NVMe SSD (G4) - MSI MAG Vampiric ház
- Samsung NP270E5E-K07PL Notebook 3 órás akkuval
- Új Gamer PC - Ryzen 7 5700X / RTX 5060 Ti / B550M WIFI / 16GB RAM / 1TB SSD / 650W
- Dell Precision 7550,15.6,FHD,i7-10850H,16GB DDR4,512GB SSD,RTX 3000 6GB DDR6,WIN11
- Beszámítás! LENOVO LOQ 15AHP10 FHD Gamer notebook - R7 250 16GB DDR5 1TB SSD RTX 5060 8GB
- Akció! Felsőkategóriás Gamer PC! I9 14900K / RTX 5080 16GB / 32GB RAM / 2TB Nvme SSD
- Apple MacBook Pro 16 (2021) M1 Max 32GB RAM 500GB SSD használt, megkímélt 100% akku (0 ciklus)
- BESZÁMÍTÁS! Gigabyte B450M R5 2600X 16GB DDR4 512GB SSD GTX 1650 4GB ZALMAN T3 Plus Deepcool 400W
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Na azért ez így hasít...
