Skocz do zawartości
Zaloguj się, aby obserwować  
xorg

Które zapytania MySQL będą szybsze ?

Polecane posty

Mam tabele w bazie danych, która obecnie ma 2 miliony rekordów.

 

Pola w tabeli są następujące:

varchar (255)

varchar2 (255)

bigint (20)

 

Obecnie mam primary key oraz fulltext przypisany na pierwszego varchar.

 

I teraz, pytanie, które zapytania wykonają się szybciej?

 

Wariant a)

 

SELECT * from tabele WHERE varchar = 'ciagznakow' LIMIT 1

 

I tak, jeżeli znajdzie przypasowanie (varchar jest unikalnym rekordem, lecz nie ma indeksu unique obecnie) to wykonuje

 

UPDATE tabela SET varchar2='costamwsadzamy', bigint=jakascyfra WHERE varchar ='ciagznakow' LIMIT 1

 

i jeżeli nie znajdzie dopasowania to

 

INSERT INTO tabela VALUES('ciagznakow','costamwsadzamy',jakascyfra)

 

I tak mam obecnie, jednakże rozważam zmianę.

 

Wariant :)

Nadać na pole varchar unique key - i tak jest unikalny, i następnie zaczynając od zapytania INSERT INTO [...] - i jeżeli mysql zwróci błąd o duplikacji klucza wtedy dać polecenie UPDATE [...] - pozwoliłoby uniknąć tego SELECT'a.

 

Optymalizacja - nawet mała - jest tutaj bardzo potrzebna, gdyż dziennie tychże zapytań wykonuje się kilkadziesiąt tysięcy.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Użyj REPLACE, które właśnie tak działa czyli dodaje jeżeli nie ma jest a usuwa i dodaje ponownie jeżeli jest.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

daj na varchar unique

 

spróbuj utwórzyć trigger before update, który będzie próbował dodawać (insert)

 

do tej pory ten select był obsługiwany z poziomu interfejsu?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×