czy ktoś mi może powiedzieć, co jest szybsze? w mysql
założenie: data - liczba typu INT, wartość domyślna 0, przechowuje czas w formie unix-owej
select * from table where data != 0
select * from table where data > 0
czy ktoś mi może powiedzieć, co jest szybsze? w mysql
założenie: data - liczba typu INT, wartość domyślna 0, przechowuje czas w formie unix-owej
select * from table where data != 0
select * from table where data > 0
Serio, aż tak zależy Ci na szybkości, że będziesz jechał na takich detalach? :]
To jest tak drobny detal, że nie zdziwiłbym się, gdyby różnicy nie było, albo gdyby zmieniała się z wersji na wersję.
jak założysz na tym polu index to nie będzie żadnej różnicy
chociaż po namyśle czy będzie indeks czy nie różnicy i tak nie będzie - bez indeksu i tak trzeba przelecieć całą tabelę a z indeksem i tak dane "zaczną" się w jednym konkretnym miejscu
zależy mi niestety na każdym drobnym detalu ;]
mam malutki projekcik, ale chcę by był najwydajniej napisany jak to tylko możliwe ;]
dzięki za odpowiedzi
jam napisał(a)
mam malutki projekcik, ale chcę by był najwydajniej napisany jak to tylko możliwe ;]
Bo?
Patryk27 napisał(a)
Serio, aż tak zależy Ci na szybkości, że będziesz jechał na takich detalach? :]
To jest detal w kompilowanych programach, ale nie w SQL-u.
Różnica (czysto teoretycznie, nie biorę pod uwagę MySQL konkretnie) powinna być taka:
select * from table where data != 0
select * from table where data > 0
Najlepiej uruchomić analizę, bo tak to tylko jest teoretyzowanie.
W teorii baza danych może szybciej przetworzyć operator != . Przykładowo Oracle używa filtrów Blooma do testowania czy ma daną wartość w tabeli. Może to zrobić w czase O(1) zamiast O(log n) używając indeksu.
W praktyce powinieneś sobie wyświetlić plan zapytania dla każdego przypadku i jeszcze najlepiej przetestować oba czasy.
Jeśli już dumamy, to jakaś baza przykładowo mogłaby mieć fingera na wartość domyślną (czyli tutaj 0) w drzewie tworzącym indeks. Dobranie się do fingera, jak wiadomo, zabiera czas O(1).
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.