Запрос на количество совпадений слишком ресурсоемкий

Кощей

if(!$needle) die("ooh");
Запрос на количество совпадений слишком ресурсоемкий

Чтобы подсчитать сколько песен добавил определенный пользователь делаю запрос
PHP:
$sql_pn = mysql_query("SELECT count(*) AS res FROM table_song WHERE user_id='$user_id'");
Но уж сильно долго оно их считает, бывает 5-8 секунд

Структура таблицы:

PHP:
CREATE TABLE `table_song` (
  `idsong` int(10) unsigned NOT NULL auto_increment,
  `idgenre` int(10) unsigned NOT NULL default '0',
  `idalbum` int(10) unsigned NOT NULL default '0',
  `title` varchar(45) default NULL,
  `lyrics` text,
  `author` varchar(255) default NULL,
  `user_id` int(10) NOT NULL default '0',
  `number` int(10) unsigned default NULL,
  `views` int(10) unsigned default '0',
  `nvotes` int(10) unsigned default '0',
  `avgvotes` float default '0',
  `idartist` int(10) NOT NULL default '0',
  `about` varchar(20) NOT NULL default '',
  `aut` varchar(45) NOT NULL default '',
  `ist` varchar(100) NOT NULL default '',
  `tip` int(10) NOT NULL default '0',
  PRIMARY KEY  (`idsong`),
  KEY `nuke_topmusic_song_FKIndex1` (`idalbum`),
  KEY `idartist` (`idartist`),
  KEY `views` (`views`)
)
Что я делаю не так ?
 

WP

^_^
Вопрос на засыпку, нафига индекс на views? И почему нет на user_id? И нафига число брать в кавычки?
 

Кощей

if(!$needle) die("ooh");
hermit_refined
опечатка


через views я вывожу топ популярных песен
поставил индекс быстрее стало, теперь 0.5-0.6 сек. тоже многова-то но намного лучше. спасибо

Про какое число идет речь?
 

Кощей

if(!$needle) die("ooh");
возвращает кол-во песен добавленых юзером с указаным user_id
 

hermit_refined

Отшельник
explain?.. (!)
ну, и чему равняется это кол-во, когда запрос исполняется "0.5-0.6 сек." ?..
 

Кощей

if(!$needle) die("ooh");
Ну для кадого человека по разному, есть те кто добавил 10, есть 20, есть 32000
 

hermit_refined

Отшельник
ok. explain'а от тебя, видимо, не дождешься, потому такое резюме: если индекс при запросе действительно используется, и скорость при этом неудовлетворительна - надо сохранять для каждого юзера это количество, и при удалении/добавлении песен - апдейтить.
 
Сверху