т.е. это все равно что так написать?zg писал(а):мде... смысла в этом мало. Но это просто составной индекс.ProFTP писал(а):KEY `word` (`word`,`page`)
Код: Выделить всё
KEY (`word`, `page`)
Модератор: terminus
т.е. это все равно что так написать?zg писал(а):мде... смысла в этом мало. Но это просто составной индекс.ProFTP писал(а):KEY `word` (`word`,`page`)
Код: Выделить всё
KEY (`word`, `page`)
Код: Выделить всё
SELECT t1.id_co,
t1.id_va,
t1.id_un,
t1.name_va,
t1.description_va,
t1.hidden_va,
t1.created,
t1.privat_va,
t2.name_co,
t2.active_co,
t2.hiden_co,
t2.hiden_g_co,
t2.close_co,
t3.hiden_g_co AS hiden_g_se,
t3.active_se,
t4.username,
(SELECT count(*)
FROM video_files AS t5
WHERE t1.id_va = t5.id_va
) AS count_video_files,
(SELECT SUM(t6.size_vf)
FROM video_files AS t6
WHERE t1.id_va = t6.id_va
) AS sum_v_video_files,
(SELECT min(t7.id_vf)
FROM video_files AS t7,
video_files_preview AS t8
WHERE t1.id_va = t7.id_va
AND t7.size_vf is NOT NULL
AND t7.size_vf > 0
AND t7.id_vf = t8.id_vf
) AS video_files ,
(
SELECT MIN(t10.id_vfp)
FROM video_files_preview AS t10
WHERE t10.id_vf = video_files
AND t10.id_vf = video_files
LIMIT 1
) AS min_v_video_files
FROM video_albums AS t1
LEFT JOIN users AS t4
ON t1.id_un = t4.id
AND t1.active_co = 1
AND t1.hiden_co = 0
AND t1.hiden_g_co = 0'
ORDER BY t1.created desc
LIMIT ?,?
Код: Выделить всё
| video_files | CREATE TABLE `video_files` (
`id_vf` mediumint(9) NOT NULL auto_increment,
`id_va` mediumint(9) NOT NULL,
`id_un` mediumint(9) NOT NULL,
`name_vf` varchar(50) default NULL,
`description_vf` varchar(600) default NULL,
`created` int(11) NOT NULL,
`hidden_vf` tinyint(1) NOT NULL default '0',
`viewing` int(11) NOT NULL default '0',
`size_vf` mediumint(9) default NULL,
`duration` varchar(15) default NULL,
`convert_vf` tinyint(1) default '0',
PRIMARY KEY (`id_vf`)
Код: Выделить всё
| video_albums | CREATE TABLE `video_albums` (
`id_va` mediumint(9) NOT NULL auto_increment,
`id_co` mediumint(9) default NULL,
`id_un` mediumint(9) NOT NULL,
`name_va` varchar(50) NOT NULL,
`description_va` varchar(600) default NULL,
`created` int(11) NOT NULL,
`hidden_va` tinyint(1) NOT NULL default '0',
`privat_va` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id_va`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 |
Код: Выделить всё
| video_files_preview | CREATE TABLE `video_files_preview` (
`id_vfp` mediumint(9) NOT NULL auto_increment,
`id_vf` mediumint(9) NOT NULL,
`id_va` mediumint(9) NOT NULL,
`id_un` mediumint(9) NOT NULL,
PRIMARY KEY (`id_vfp`)
) ENGINE=MyISAM AUTO_INCREMENT=197 DEFAULT CHARSET=utf8 |
Код: Выделить всё
| content | CREATE TABLE `content` (
`id_co` int(11) NOT NULL auto_increment,
`id_un` int(11) NOT NULL,
`id_se` int(11) NOT NULL,
`name_co` varchar(255) NOT NULL,
`heading_name_co` varchar(800) NOT NULL,
`keys_co` varchar(800) NOT NULL,
`text_co` text NOT NULL,
`active_co` tinyint(1) NOT NULL default '1',
`hiden_co` tinyint(1) NOT NULL default '1',
`hiden_g_co` tinyint(1) NOT NULL default '0',
`close_co` tinyint(1) NOT NULL default '1',
`voting_co` tinyint(1) NOT NULL default '1',
`vo_all_co` int(11) NOT NULL default '1',
`vo_balls_co` int(11) NOT NULL default '1',
`vo_per` varchar(20) NOT NULL default '0',
`created` int(11) NOT NULL,
`modified` int(11) NOT NULL default '1',
`forbi_comm_co` tinyint(1) NOT NULL default '0',
`viewing` int(11) default NULL,
`ip` varchar(20) NOT NULL,
`host` varchar(255) default NULL,
`forwarded` varchar(20) default NULL,
PRIMARY KEY (`id_co`)
) ENGINE=MyISAM AUTO_INCREMENT=76 DEFAULT CHARSET=utf8 COMMENT='X0 - content category' |
гм... тут никакие индексы не спасут, запрос будет всё равно тупить. Самое правильное решение - хранить количество файлов по категориям в отдельной специальной таблице. А обновлять инфу через триггеры.ProFTP писал(а): (SELECT count(*) FROM video_files AS t5 WHERE t1.id_va = t5.id_va ) AS count_video_files,
а ты пробовал?ProFTP писал(а):я размышлял: триггеры говрят глючат сильно
а тебе голова на кой?ProFTP писал(а):это hizel говорил
на заборах тоже написаноProFTP писал(а):и где-то написано было...
откуда такие цифры?ProFTP писал(а):но там просто реально может быть 5-20 запросов UPDATE лишних (зачем их делать?)
я вроде про таблицу говорил, не?ProFTP писал(а):там где много count'ов будет, то там скорее всего нужен именно триггер...
это же не проблема, вообще...? и это зависит от того какая таблица, правильно? если она будет маленькая?ProFTP писал(а):да, я видел, но я на первый раз так сделал, потом поставлю триггер...
ну... пока не попробуешь не узнаешьProFTP писал(а):это же не проблема, вообще...?