Najszybszy sposób określenia, czy wpis istnieje
Jak sama nazwa wskazuje ... staram się znaleźć najszybszy i najtańszy sposób na ustalenie, czy rekord istnieje w tabeli, czy nie.
Prośba o próbkę:
SELECT COUNT(*) FROM products WHERE products.id = ?; vsSELECT COUNT(products.id) FROM products WHERE products.id = ?; vsSELECT products.id FROM products WHERE products.id = ?;
Powiedzmy, że
?zamienił miejscami z
'TB100'... zarówno pierwsze, jak i drugie zapytanie zwróci dokładnie ten sam wynik (powiedzmy ...
1 dla tej rozmowy). Ostatnie zapytanie zwróci[code]„TB100”
zgodnie z oczekiwaniami lub nic, jeśliidnie znajduje się w tabeli. [/code]Celem jest sprawdzenie, czy
idznajduje się w tabeli, czy nie. Jeśli nie, to program wstawi następny rekord, jeśli taki istnieje, to pominie go lub wykona zapytanie UPDATE w oparciu o inną logikę programu poza zakresem tego pytania.
Który jest szybszy i mniejszy? (Powtarza się to dziesiątki tysięcy razy na uruchomienie programu i będzie uruchamiane wiele razy dziennie).
(Wykonywanie tego zapytania do serwera M $ SQL z języka Java za pośrednictwem sterownika JDBC dostarczonego przez M $)
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
11 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
(możesz nawet użyć nieprawidłowego wyrażenia, takiego jak , i nie ulegnie ono zerwaniu)
http://www.sqlfiddle.com/#!6/d41d8/6290
.
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Nie musisz liczyć, aby wiedzieć, czy w tabeli są dane. I nie używaj aliasu, gdy nie musisz.
Anonimowy użytkownik
Potwierdzenie od:
To podejście zwraca wartość logiczną dla Ciebie.
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Jest to cross-relacyjne rozwiązanie bazodanowe, które działa we wszystkich bazach danych.
Anonimowy użytkownik
Potwierdzenie od:
Dobrze, że działa we wszystkich relacyjnych bazach danych
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od: