Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2014-02-10 10:06:28

  Huk - Smoleńsk BULWA!

Huk
Smoleńsk BULWA!
Zarejestrowany: 2006-11-08

SQL - jaka będzie wydajność takiego zapytania

Założenie:

Mam bazę SQL z prostą tabelą (nazwijmy ją "Tab1"):

Kod:

ID
Nazwa
FK_KategoriaID

oraz tabelę kategorii (nazwijmy ją "TabKat"):

Kod:

ID
Nazwa

Zakładając że w pierwszej tabeli będę miał np. milion wierszy z kategorią "X" oraz jeden z kategorią "Y", oraz będę miał index założony na ID'ku tabeli ile potrwa zapytanie w stylu:

Kod:

select * from Tab1 as T1
where Tab1.FK_KategoriaID = JakieśIdKategorii

? Czy SQL jest na tyle mądry że jakoś grupuje sobie wewnętrznie po kluczach obcych i wyszuka to w milisekundę, czy też będzie leciał wszystkie wiersze po kolei?

Pozdrawiam.

Offline

 

#2  2014-02-10 10:16:07

  hello_world - Członek DUG

hello_world
Członek DUG
Skąd: Rymanów Zdrój
Zarejestrowany: 2010-06-03
Serwis

Re: SQL - jaka będzie wydajność takiego zapytania

Powinno pójść szybko. Nie wiem czy w milisekundach ale w kilku sekundach powinno dać rade. Jak masz wypaśną maszynę to da radę. Nie jest to skomplikowane zapytanie.

Offline

 

#3  2014-02-10 12:10:11

  Huk - Smoleńsk BULWA!

Huk
Smoleńsk BULWA!
Zarejestrowany: 2006-11-08

Re: SQL - jaka będzie wydajność takiego zapytania

@hello_world:

Hmmm może troszkę źle zadałem pytanie - wiem że nowy komp przetrwa takie coś w sekundę czy dwie - zastanawiam się tylko czy da się jakoś tak zoptymalizować zapytanie żeby lockup time był stał (lub prawie stały) jeżeli z miliona wierszy potrzebuję dwóch czy trzech. Zdaje się że SQL standardowo zakłada indeksy na kluczach obcych stąd pytanie czy będzie lecieć po kolei czy jakoś wydajniej. Bardziej chyba do osób znających niskopoziomowe optymalizacje na serwerach SQL ;]

Offline

 

#4  2014-02-10 13:12:06

  mAg - Członek DUG

mAg
Członek DUG
Skąd: Mrągowo
Zarejestrowany: 2004-12-23
Serwis

Re: SQL - jaka będzie wydajność takiego zapytania

a jaki to silnik... powyżej określonej liczby werszy to właśnie od niego będzie zależało szybkość działania.


.:: Linux connecting people :D ::.  Linux Registered User #358097 Debian GNU/Linux

[img]https://linuxcounter.net/cert/358097.png[/img]

Offline

 

#5  2014-02-10 14:34:17

  Huk - Smoleńsk BULWA!

Huk
Smoleńsk BULWA!
Zarejestrowany: 2006-11-08

Re: SQL - jaka będzie wydajność takiego zapytania

Powiedzmy że M$ SQL Serwer - ale wydaje mi się (może błędnie) że taka optymalizacja powinna się odbywać w każdym popularnym serwerze...

Offline

 

#6  2014-02-10 15:04:09

  Piotr3ks - Też człowiek :-)

Piotr3ks
Też człowiek :-)
Skąd: Białystok
Zarejestrowany: 2007-06-24

Re: SQL - jaka będzie wydajność takiego zapytania

No to może indeksowanie tabel?
http://di.com.pl/porady/25700,0,Porada_MySQL_a_poprawa_wydajnosci_aplikacji.html

Najlepiej jest sobie poeksperymentować.Stworzyć fikcyjną bazę danych i bawić się na niej.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)

[ Generated in 0.012 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00015 SET CHARSET latin2
0.00006 SET NAMES latin2
0.00135 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.14.15.177' WHERE u.id=1
0.00115 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.14.15.177', 1716282875)
0.00051 SELECT * FROM punbb_online WHERE logged<1716282575
0.00059 SELECT topic_id FROM punbb_posts WHERE id=255811
0.00119 SELECT id FROM punbb_posts WHERE topic_id=25195 ORDER BY posted
0.00128 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=25195 AND t.moved_to IS NULL
0.00008 SELECT search_for, replace_with FROM punbb_censoring
0.00129 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=25195 ORDER BY p.id LIMIT 0,25
0.00135 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=25195
Total query time: 0.009 s