Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MYSQL] LIMIT, Pytanie czysto teoretyczne
Skie
post 7.07.2009, 17:28:42
Post #1





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----


Witam,
ostatnio zastanawiałem się nad komendą LIMIT w MySQL. Jestem ciekaw czy jeśli mamy zapytanie, które z góry wiemy, że wykona się tylko raz, np.: (wartość pola nie powtórzy się w innym rekordzie)

Kod
SELECT * FROM tabela WHERE pole=cos;


Lub:

Kod
UPDATE tabela SET pole2=cos2 WHERE pole=cos;


Lub:

Kod
DELETE FROM tabela WHERE pole=cos;


To czy opłaca się dodawać do tego "LIMIT 1" ?
NP:

Kod
SELECT * FROM tabela WHERE pole=cos LIMIT 1;


Lub:

Kod
UPDATE tabela SET pole2=cos2 WHERE pole=cos LIMIT 1;


Lub:

Kod
DELETE FROM tabela WHERE pole=cos LIMIT 1;


Teoretycznie wydaje mi się, że bez LIMIT 1 MySQL po napotkaniu pierwszego pasującego rekordu wykona na nim operacje, a następnie zacznie przeszukiwać resztę czy istnieje jeszcze jakiś rekord spełniający warunek WHERE.
Natomiast z LIMIT 1 po napotkaniu owego rekordu powinien przestać szukać, przez co zapytanie powinno szybciej działać i zżerać mniej zasobów.

Czy moje rozumowanie jest słuszne, czy się mylę?

Z góry dziękuję za odp.


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post
melkorm
post 7.07.2009, 18:25:05
Post #2





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Cytat
As soon as MySQL has sent the required number of rows to the client, it aborts the query unless you are using SQL_CALC_FOUND_ROWS.


@ Manual.

Czyli przerywa, czyli się opłaca.


--------------------
Go to the top of the page
+Quote Post
Crozin
post 7.07.2009, 20:02:33
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Jeżeli masz pewność, że wartość dla danej kolumny będzie unikalna i na jej podstawie konstruujesz WHERE warto zastanowić się na indeksem UNIQUE - który również przerwie dalsze przeszukiwanie tabeli.

Oczywiście w przypadku liczby innej niż jeden: LIMIT
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 04:00