Индексы ... понял зачем .... понял как ... но не понял что лучше ...

Сенсей

Новичок
Индексы ... понял зачем .... понял как ... но не понял что лучше ...

Вроде и читал про них факи ..... и исследовал различные скрипты ... есть пару очень важных вопросов ...

Вот есть например 2 таблицы ...... я в них по разному организовал индексы .... но вот какой из способов правильный ... я не знаю ...

Поля news_topic_id и news_enabled ВСЕГДА в условии WHERE

Поля news_show_in_home и news_id - НЕ ВСЕГДА используются в условиях ... а уже в зависимости от требуемых дейсвий ....

Какая реализвация здесь правильней.... или может можно еще как то улучшить ?

Первый вариант -

Код:
CREATE TABLE test (
  news_id int(11) unsigned NOT NULL auto_increment,
  news_title varchar(255) NOT NULL default '',
  news_start_text text,
  news_topic_id int(3) unsigned NOT NULL default '1',
  news_enabled tinyint(1) unsigned NOT NULL default '1',
  news_show_in_home tinyint(1) unsigned NOT NULL default '1',
  PRIMARY KEY  (news_id),
  KEY news_enabled (news_enabled),
  KEY news_show_in_home (news_show_in_home),
  KEY news_topic_id (news_topic_id)
) TYPE=MyISAM
Второй вариант -

Код:
CREATE TABLE test (
  news_id int(11) unsigned NOT NULL auto_increment,
  news_title varchar(255) NOT NULL default '',
  news_start_text text,
  news_topic_id int(3) unsigned NOT NULL default '1',
  news_enabled tinyint(1) unsigned NOT NULL default '1',
  news_show_in_home tinyint(1) unsigned NOT NULL default '1',
  PRIMARY KEY  (news_id),
  KEY name (news_topic_id,news_show_in_home,news_enabled)
) TYPE=MyISAM
Плюс ко всему интересует - название индекса на что то влияет ? Или же здесь главное какое поле входит в этот индекс ?
 

Фанат

oncle terrible
Команда форума
отвечать на свои вопросы должен в первую очередь ты сам, запуская свои запросы в консоли через explain
 

Сенсей

Новичок
да я ставлю этот EXPLAIN перед селектом - нихрена не выводит мускул :(

может еще нужно mysql_fetch_row или что то из этого юзать ?

не могу понять как юзать эту команду ... читал про нее все - но у меня не получается вывести результат ...
 

Сенсей

Новичок
Моя ошибка .... то что не выводило ....

теперь вот :

так выводит инфу как надо :

Код:
$result = sql_query("SELECT a.news_id, a.news_title, a.news_date, a.news_start_text, a.news_end_text, a.news_comments_counter, a.news_hit_counter, a.news_topic_id, a.news_author, a.news_allow_comments, a.news_auto_br, b.news_topics_id, b.news_topics_title, b.news_topics_image, b.news_topics_description FROM ".$prefix."_news a, ".$prefix."_news_topics b WHERE a.news_enabled='1' AND a.news_show_in_home='1' AND a.news_topic_id = b.news_topics_id ORDER BY a.news_id DESC", $dbi);
while(list($news_id, $title, $time, $hometext, $bodytext, $comments, $counter, $topic, $informant, $acomm, $autobr, $topics_id, $topics_title, $topics_image, $topics_description) = sql_fetch_row($result, $dbi))
{
echo "<BR><BR>$news_id,<BR>$title,<BR>$time,<BR>$hometext,<BR>$bodytext,<BR>$comments,<BR>$counter,<BR>$topic,<BR>$informant,<BR>$acomm,<BR>$autobr,<BR>$topics_id,<BR>$topics_title,<BR>$topics_image,<BR>$topics_description";
}
добавил EXPLAIN

Код:
$result = sql_query("EXPLAIN SELECT a.news_id, a.news_title, a.news_date, a.news_start_text, a.news_end_text, a.news_comments_counter, a.news_hit_counter, a.news_topic_id, a.news_author, a.news_allow_comments, a.news_auto_br, b.news_topics_id, b.news_topics_title, b.news_topics_image, b.news_topics_description FROM ".$prefix."_news a, ".$prefix."_news_topics b WHERE a.news_enabled='1' AND a.news_show_in_home='1' AND a.news_topic_id = b.news_topics_id ORDER BY a.news_id DESC", $dbi);
while(list($news_id, $title, $time, $hometext, $bodytext, $comments, $counter, $topic, $informant, $acomm, $autobr, $topics_id, $topics_title, $topics_image, $topics_description) = sql_fetch_row($result, $dbi))
{

echo "<BR><BR>$news_id,<BR>$title,<BR>$time,<BR>$hometext,<BR>$bodytext,<BR>$comments,<BR>$counter,<BR>$topic,<BR>$informant,<BR>$acomm,<BR>$autobr,<BR>$topics_id,<BR>$topics_title,<BR>$topics_image,<BR>$topics_description";
}
теперь выводит мне :

Код:
a,
ref,
news_show_in_home,news_enabled,
news_show_in_home,
1,
const,
3,
where used; Using temporary; Using filesort,
,
,
,
,
,
,


b,
ALL,
PRIMARY,
,
,
,
3,
where used,
,
,
,
,
,
,
 
Сверху