т.е. это все равно что так написать?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 писал(а):это же не проблема, вообще...?