Diskuze: SQL - Hledání 1 záznamu z XYZ totožných v tabulce s 1M záznamy
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Nie som síce nejako zvlásť zbehlý v SQL, ale neskúšal si použiť FETCH
FIRST?
https://www.ibm.com/…tclause.html
Inak, prečo tvoja query prechádza všetky články? Vo Visual Studiu sa dá zobraziť execution plan a u mňa mi pri SELECT TOP 1 tvrdí, že naozaj prečíta len 1 záznam (to isté aj pri whereovanom dopyte).
No Navicat mi ukazuje stejný počet záznámu a stejný execution time:
SELECT TOP 1 *
FROM Articles
WHERE enabled = true
a
SELECT *
FROM Articles
WHERE enabled = true
Koukal jsem se na W3Schools a píše se tam:
The SELECT TOP clause is used to specify the number of records to return.
To by i sedělo s tím co mi ukazuje navicat, tedy přečte vše a vráti 1. Takže jsem z toho teď zmatený
Zkus Limit 1, ten by měl dělat to co chceš.
LIMIT použít nemůže. Používá TOP, z toho usuzuju, že jede na MSSQL, ne na MySQL.
@Bogdan: Ať mě případně někdo opraví, ale je jedno, jak omezíš počet výsledků, protože procesor postupuje:
- FROM
- WHERE
- GROUP BY
- HAVING
- SELECT
- ORDER BY
Schválně jsem si zkusil TOP 1 omezený WHERE z tabulky s 10 záznamy, pak znovu to samé, ale s 60M(!) záznamy, rozdíl byl naprosto zanedbatelný (v řádu jednotek ms).
To jsem potřeboval vědět, jestli to jde pomocí SQL.
Takže to budu muset nechat zatím takto, a potom přemýšlet jak to udělat
lépe
Zobrazeno 8 zpráv z 8.