Indeksowanie, a Rows_examined
Darek - 11-05-2007 12:31
Indeksowanie, a Rows_examined
Wywala mi taka wiadomosc:
# User@Host: @ localhost [] # Query_time: 0.028 Lock_time: 0 Rows_sent: 1 Rows_examined: 5540 use emediapl;
SELECT article2category_relations.article_id, article_categories.owners_id, article_relations.title_id, article_relations.owners_id, article_titles.title_name, article_titles.title_image, article_titles.title_text, articles.article_lead, articles.article_text, articles.article_image, articles.article_invitation, articles.ea_article_links, article_titles.eat_bazavortoj FROM article2category_relations, article_categories, article_relations, article_titles, articles WHERE article2category_relations.ea2cr_category_id = 1 AND article2category_relations.ea2cr_category_id = article_categories.category_id AND article2category_relations.article_id = article_relations.article_id AND article_relations.title_id = article_titles.title_id AND article_relations.article_id = articles.article_id AND article_relations.owner_id = 17 AND article2category_relations.start_date < 1174389321 AND article2category_relations.end_date > 1174389321 AND article_titles.language_id = 0 AND articles.language_id = 0 ORDER BY article2category_relations.year2007 * article2category_relations.month3 * article2category_relations.weekday2 * article2category_relations.monthday20 DESC, article_relations.article_id DESC LIMIT 0,1;
+----+-------------+-----------------------------------+--------+---------------------+---------+---------+----------------------------------------------------+------+---------------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-----------------------------------+--------+---------------------+---------+---------+----------------------------------------------------+------+---------------------------------+ | 1 | SIMPLE | article_categories | const | PRIMARY,category_id | PRIMARY | 1 | const | 1 | Using temporary; Using filesort | | 1 | SIMPLE | article_titles | ALL | NULL | NULL | NULL | NULL | 73 | Using where | | 1 | SIMPLE | articles | ALL | NULL | NULL | NULL | NULL | 73 | Using where | | 1 | SIMPLE | article_relations | eq_ref | PRIMARY | PRIMARY | 1 | articles.article_id | 1 | Using where | | 1 | SIMPLE | article2category_relations | eq_ref | PRIMARY | PRIMARY | 2 | article_relations.article_id,const | 1 | Using where | +----+-------------+-----------------------------------+--------+---------------------+---------+---------+----------------------------------------------------+------+---------------------------------+ 5 rows in set (0.00 sec)
Niestety MySQL informuje iż do podania poprawnego wyniku zapytania, który zawiera tylko jeden rekord, wymagane było przeskanowanie 5540 rekordów w tabelach związanych z pobieranymi danymi.
Prawdopodobnie bezpośrednia przyczyna jest tutaj brak indeksów na poszczególnych rekordach w bazie danych, co obrazuje polecenie explain:
Ale jak to zrobić za pomocą phpMyAdmina. I jak te same informacje otrzymać te informacje przy pomocy tego programu?
Darek - 11-05-2007 12:31
Użytkownik "Darek" <jojajo@gazeta.pl> napisał w wiadomości news:f005ho$fvj$1@inews.gazeta.pl... > Wywala mi taka wiadomosc: > > > > # User@Host: @ localhost [] > # Query_time: 0.028 Lock_time: 0 Rows_sent: 1 Rows_examined: 5540 > use emediapl; > > > SELECT article2category_relations.article_id, > article_categories.owners_id, > article_relations.title_id, > article_relations.owners_id, > article_titles.title_name, > article_titles.title_image, > article_titles.title_text, > articles.article_lead, > articles.article_text, > articles.article_image, > articles.article_invitation, > articles.ea_article_links, > article_titles.eat_bazavortoj > FROM article2category_relations, article_categories, > article_relations, article_titles, articles > WHERE article2category_relations.ea2cr_category_id = 1 > AND article2category_relations.ea2cr_category_id = > article_categories.category_id > AND article2category_relations.article_id = > article_relations.article_id > AND article_relations.title_id = article_titles.title_id > AND article_relations.article_id = articles.article_id > AND article_relations.owner_id = 17 > AND article2category_relations.start_date < 1174389321 > AND article2category_relations.end_date > 1174389321 > AND article_titles.language_id = 0 > AND articles.language_id = 0 > ORDER BY article2category_relations.year2007 * > article2category_relations.month3 * article2category_relations.weekday2 * > article2category_relations.monthday20 DESC, article_relations.article_id > DESC > LIMIT 0,1; > > > +----+-------------+-----------------------------------+--------+---------------------+---------+---------+----------------------------------------------------+------+---------------------------------+ > | id | select_type | table | type | > possible_keys | key | key_len | ref | rows | Extra > | > +----+-------------+-----------------------------------+--------+---------------------+---------+---------+----------------------------------------------------+------+---------------------------------+ > | 1 | SIMPLE | article_categories | const | > PRIMARY,category_id | PRIMARY | 1 | const | 1 | Using temporary; > Using filesort | > | 1 | SIMPLE | article_titles | ALL | NULL | NULL > | NULL | NULL | 73 | > Using where | > | 1 | SIMPLE | articles | ALL | NULL | NULL > | NULL | NULL | 73 | > Using where | > | 1 | SIMPLE | article_relations | eq_ref | PRIMARY | > PRIMARY | 1 | articles.article_id | 1 | Using > where | > | 1 | SIMPLE | article2category_relations | eq_ref | PRIMARY | > PRIMARY | 2 | article_relations.article_id,const | 1 | Using > where | > +----+-------------+-----------------------------------+--------+---------------------+---------+---------+----------------------------------------------------+------+---------------------------------+ > 5 rows in set (0.00 sec) > > > > > > > > Niestety MySQL informuje iż do podania poprawnego wyniku zapytania, który > zawiera tylko jeden rekord, wymagane było przeskanowanie 5540 rekordów w > tabelach związanych z pobieranymi danymi. > > Prawdopodobnie bezpośrednia przyczyna jest tutaj brak indeksów na > poszczególnych rekordach w bazie danych, co obrazuje polecenie explain: > > > > Ale jak to zrobić za pomocą phpMyAdmina. I jak te same informacje otrzymać > te informacje przy pomocy tego programu? >
I nikt mi nie pomoże. :(
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
[pgsql] 7.4 =?ISO-8859-2?Q?og=B3upia=B3_przy_zak=B3adaniu_?==?ISO-8859-2?Q?indeksu?=
=?ISO-8859-2?Q?=5BORACLE=2C_ORDER_BY=5D_Czy_indeksowane_?==?I SO-8859-2?Q?kolumny_przy=B6piesz=B1_sortowanie=3F?=
[postgresql] szukanie po indeksie tsearch'owym wlecze sie - da siejakos przyspieszyc?
[MSSQL 2000] procedura kopiująca rekordy i indeks UNIQUE
[MySQL] Indeksy =?iso-8859-2?Q?pe=B3notekstowe?= a kodowanie
indeks w =?iso-8859-2?Q?po=B3=B1czeniu?= z lower()
indeksacja bazy płatnika via osql / składnia
[PGSQL] Sortowanie wg indeksu innej tabeli
[MySQL] =?iso-8859-2?Q?=BCle_u=BFywane?= indeksy
zanotowane.pldoc.pisz.plpdf.pisz.plradioaktywni.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|