Wykop.pl Wykop.pl
  • Główna
  • Wykopalisko221
  • Hity
  • Mikroblog
  • Zaloguj się
  • Zarejestruj się
Zaloguj się

Popularne tagi

  • #ciekawostki
  • #informacje
  • #technologia
  • #polska
  • #swiat
  • #motoryzacja
  • #podroze
  • #heheszki
  • #sport

Wykop

  • Ranking
  • Osiągnięcia
  • FAQ
  • O nas
  • Kontakt
  • Reklama
  • Regulamin
To Znalezisko jest w archiwum

344

MySQL: 20 najlepszych praktyk

Bardzo przystępnie i czytelnie wyjaśnione jak pisać wydajne zapytania, wraz z obrazowymi przykładami.

i.....s
konto usunięte
z
net.tutsplus.com
dodany: 30.11.2009, 12:09:54
  • #
    technologia
  • #
    nowetechnologie
  • #
    mysql
  • #
    najlepsze
  • #
    praktyki
  • #
    sql
  • #
    best
  • #
    practices
  • #
    wydajnosc
  • 41
  • Otrzymuj powiadomienia
    o nowych komentarzach

Treści powiązane (1)

C# Best Practices
chemicalkash
z dotnetspider.com
  • -1

Komentarze (41)

najlepsze

Yelonek
Yelonek
01.12.2009, 09:05:57
  • 15
Wiem, że to nie stack overflow, ale i tak zapytam. :P

Jak zaprojektować bazę w sqlite3, żeby móc przechowywać wyjściowe dane z kolejnych iteracji algorytmu? Powiedzmy mam 100000 (ta liczba może ulec zmianie) struktur z polami: float x, float y, float fitness (może jeszcze będę chciał zapisać: float xlb, float ylb, float fitnesslb). Dane są przetwarzane równolegle i dostępne w jednej chwili, więc trzeba je wszystkie naraz zapisać.

Obecnie mam taką: CREATE
  • 2
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

Yelonek
Yelonek
01.12.2009, 10:06:09
  • 14
Z insertami to samo mi się narzuciło, gdzieś o tym czytałem. Poza tym zajrzałem na stronę sqlite3, gdzie w faq jest to opisane. Przeprowadziłem małe badania i okazało się, że optymalna wielkość to 2000 insertów w jednej transakcji: czas wykonania 1:18 na zapis 10 razy po 100000 danych + trochę innego kodu. Przy synchronous off czas spadł do 0:53, a przy podwojeniu cache_size, czyli do 4000 mam 0:45. Może spróbuję jeszcze z
i.....s
konto usunięte
Autor
01.12.2009, 09:21:20
  • 1
Z samą strukturą tabeli dużo nie pokombinujesz. Ewentualnie, to jeśli możesz to używaj możliwie małych typów danych.

Jeśli chodzi o indeksy - każdy indeks spowalnia INSERT ale tabela bez Primary Key to zbrodnia. Tak więc utwórz tylko PK, żadnego innego (o ile jest tak jak mówisz - nie wyciągasz zbyt często tych danych).

Staraj się upakować jak najwięcej INSERTów do jednej transakcji, nie COMMITuj przy każdym INSERTcie.

Nie
f.....s
f.....s
konto usunięte 30.11.2009, 16:26:20
  • 10
Najlepszy jest autor Burak Guzel. Nie chciałbym mieć tak na imię.
  • 4
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

Diabl0
Diabl0
Diabl0
01.12.2009, 08:47:13
  • -3
Hmmm, nie chciał bym widzieć wyniku waszego zapytania za 10-20 lat

Jak już to:

SELECT * FROM buraczki WHERE dziewica IS NOT NULL AND dataurodzenia BETWEEN( DATESUB(dataurodzenia, INTERVAL 28 YEAR), DATESUB(data_urodzenia, INTERVAL 18 YEAR))
o.....q
o.....q
konto usunięte 01.12.2009, 09:25:56
  • -10
buraczkiDataContext db=new buraczkiDataConext();

var buraczek=(from p in db.Buraczki where p.DataUrodzenia==Datetime.Now.AddYears(-25) select p).Single();

try { System.FedEx.Send(buraczek); }

catch
Crea
Crea
01.12.2009, 08:57:39
  • 8
nic mi to nie mowi,ale wykopie dla innych
  • 1
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

suchanice
suchanice
01.12.2009, 19:42:05
  • 2
O! To Ty też? Ufff...
jacekp
jacekp
jacekp
01.12.2009, 07:58:29
  • 7
Dorzucę jeszcze jedno często zapominane, po WHERE w pierwszejk olejności podajemy pola na które mamy założony indeks np

WHERE id = 1 and pass = SHA1('cos');

bedzie duzo szybsze niz

WHERE pass = SHA1('cos') and id = 1;
  • 7
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

sajgonki2piedziesiat
sajgonki2piedziesiat
sajgonki2piedziesiat
01.12.2009, 10:40:09
  • 5
tak bylo, ale w przeszlosci. Zrob sobie explain'y na obu wersjach, powinienes otrzymac ten sam wynik.
i.....r
i.....r
konto usunięte 01.12.2009, 17:02:44
  • 3
MySQL, podobnie jak większość innych serwerów baz danych, ma optymalizator zapytań, który automatycznie poprawia m.in. kolejność warunków.

Dotyczy to nie tylko WHERE, optymalizator może nawet zmienić FROM t1 INNER JOIN t2 na FROM t2 INNER JOIN t1, jak wyjdzie że to jest szybsze.
b.....k
konto usunięte 30.11.2009, 18:52:34
  • 6
21*
  • 5
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

i.....s
konto usunięte
Autor
30.11.2009, 20:18:21
  • 15
A kłamczuch nawet w URL-u napisał 20. Tak więc 'informacja nieprawdziwa' ;-)
p.....y
p.....y
konto usunięte 01.12.2009, 00:14:02
  • 12
@b1ckjack - pewno się cieszysz, że akurat 21 ;)
makkak
makkak
01.12.2009, 09:10:51
  • 4
Skoro tak sobie doradzamy to ja jeszcze poradze na temat WHERE i AND lub OR mianowicie:

Jezeli w WHERE mamy warunki rozdzielone za pomoca AND to warunek najmniej prawdopodobny dajemy jako pierwszy (jezeli jego wartosc jest falsz to cale wyrazenie traktowane jest jako falsz bez sprawdzania drugiego warunku)

Jezeli w WHERE mamy warunki rozdzielone OR to warunek najbardziej prawdopodobny dajemy jako pierwszy (jezeli jego wartosc jest true to cale wyrazenie traktowane jest
  • 1
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

armata
armata
armata
01.12.2009, 09:43:38
  • 2
to się odnosi nie tylko do MySQL ale ogólnie do programowania. Jak ktoś rozumie logikę to z łatwością zauważy dlaczego tak się powinno układać warunki.

Ale ale premature optimization is the root of all evil
furiosan
furiosan
furiosan
01.12.2009, 11:05:17
  • 3
Artykuł to dowód, że większość programistów web'owych oraz PHP to nie programiści baz danych. Rada by ozywać ORM jest jak najbardziej na miejscu.
  • 3
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

Borszczuk
Borszczuk
01.12.2009, 13:18:31
  • 13
Jestem pelen podziwu ze chciales napisac "óżywać"...
muaddib
muaddib
01.12.2009, 13:37:09
  • 8
Może on chciał ożywiać?
aberazioon
aberazioon
aberazioon
02.12.2009, 09:19:57
  • 2
lubię czytać mądre rzeczy nie mając o nich zielonego pojęcia.
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

kulpak
kulpak
kulpak
01.12.2009, 10:26:17
  • -4
http://www.develway.pl/wiadomosc/top-20-mysql-best-practices Serwis podobny do wykopu oparty o tematykę informatyki.
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

altruista
altruista
30.11.2009, 22:41:45
  • -13
Treść przeznaczona dla osób powyżej 18 roku życia...
  • 4
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

kajlerkompajler
kajlerkompajler
kajlerkompajler
01.12.2009, 09:50:07
  • 6
Nawet jeżeli w bazie masz tylko 1 unikalny rekord, który spełnia WHERE, to po znalezieniu go baza dalej będzie przeszukiwana do końca, więc LIMIT 1 oszczędza czas od znalezienia Twojego rekordu do przeszukania reszty bazy.

"if ($w = @mysqlfetchrow($q)) niż if (mysqlnumrows($q) > 0) "

Jak widzisz autor sprawdza czy w ogóle jest taki rekord, a nie chce wyciągnąć z niego danych (SELECT 1) więc po co w przekazywać rekord z jedynką
M.....s
M.....s
konto usunięte 01.12.2009, 07:46:55
  • 3
Przeczytaj jeszcze raz ten tekst, tym razem ze zrozumieniem, bo widać, że wiele możesz się z niego nauczyć.
  • <
  • 1
  • 2
  • Strona 1 z 2
  • >

Hity

tygodnia

Nie żyje Joanna Kołaczkowska
Nie żyje Joanna Kołaczkowska
5881
#niejembodrogo uderzmy w Januszy gastronomi!
#niejembodrogo uderzmy w Januszy gastronomi!
3949
Ponad 300 km/h przez Warszawę. Prokuratura umorzyła śledztwo.
Ponad 300 km/h przez Warszawę. Prokuratura umorzyła śledztwo.
3409
Nadkomisarz przyjeżdża na potańcówkę i parkuje na środku Katowickiego rynku.
Nadkomisarz przyjeżdża na potańcówkę i parkuje na środku Katowickiego rynku.
3067
PZKFiTS wycofuje licencję najlepszej zawodniczce na świecie, Agacie Sitko
PZKFiTS wycofuje licencję najlepszej zawodniczce na świecie, Agacie Sitko
2862
Pokaż więcej

Powiązane tagi

  • #ciekawostki
  • #nauka
  • #komputery
  • #zainteresowania
  • #stacjakosmiczna
  • #polska
  • #informatyka
  • #rozrywka
  • #swiat
  • #internet
  • #wydarzenia
  • #sztucznainteligencja
  • #motoryzacja
  • #ai
  • #telefony

Wykop © 2005-2025

  • O nas
  • Reklama
  • FAQ
  • Kontakt
  • Regulamin
  • Polityka prywatności i cookies
  • Hity
  • Ranking
  • Osiągnięcia
  • Changelog
  • więcej

RSS

  • Wykopane
  • Wykopalisko
  • Komentowane
  • Ustawienia prywatności

Regulamin

Reklama

Kontakt

O nas

FAQ

Osiągnięcia

Ranking