Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ключи UNIQUE KEY 
:(
    Опции темы
gcc
Дата 7.12.2009, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 3
Всего: 17



подскажите что значит такая записать  UNIQUE topic (id_topic, id_msg),

это значит что id_topic и id_msg должны быть разными для topic?

Код

CREATE TABLE {$db_prefix}messages (
  id_msg int(10) unsigned NOT NULL auto_increment,
  id_topic mediumint(8) unsigned NOT NULL default '0',
  id_board smallint(5) unsigned NOT NULL default '0',
  poster_time int(10) unsigned NOT NULL default '0',
  id_member mediumint(8) unsigned NOT NULL default '0',
  id_msg_modified int(10) unsigned NOT NULL default '0',
  subject tinytext NOT NULL,
  poster_name tinytext NOT NULL,
  poster_email tinytext NOT NULL,
  poster_ip tinytext NOT NULL,
  smileys_enabled tinyint(4) NOT NULL default '1',
  modified_time int(10) unsigned NOT NULL default '0',
  modified_name tinytext NOT NULL,
  body text NOT NULL,
  icon varchar(16) NOT NULL default 'xx',
  approved tinyint(3) NOT NULL default '1',
  PRIMARY KEY (id_msg),
  UNIQUE topic (id_topic, id_msg),
  UNIQUE id_board (id_board, id_msg),
  UNIQUE id_member (id_member, id_msg),
  KEY approved (approved),
  KEY ip_index (poster_ip(15), id_topic),
  KEY participation (id_member, id_topic),
  KEY show_posts (id_member, id_board),
  KEY id_topic (id_topic)
) TYPE=MyISAM;

PM WWW ICQ Skype GTalk Jabber   Вверх
Pitlord
Дата 7.12.2009, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 31.10.2009

Репутация: нет
Всего: 7



Цитата(gcc @  7.12.2009,  01:09 Найти цитируемый пост)
подскажите что значит такая записать  UNIQUE topic (id_topic, id_msg),

Это означает, что пара id_topic и id_msg должна быть уникальной.

Добавлено через 40 секунд
Хотя тут id_msg — PRIMARY KEY, поэтому вроде бы индекс излишен.
PM MAIL   Вверх
gcc
Дата 7.12.2009, 03:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 3
Всего: 17



Цитата(Pitlord @ 7.12.2009,  01:36)
Цитата(gcc @  7.12.2009,  01:09 Найти цитируемый пост)
подскажите что значит такая записать  UNIQUE topic (id_topic, id_msg),

Это означает, что пара id_topic и id_msg должна быть уникальной.

я так понял уникальным именно для topic?
и topic id_topic и id_msg - должны быть разные записи?

а зачем это сделанно? зачем ставить такой индекс для быстродействия или для прикола?

====

а что значит    KEY show_posts (id_member, id_board),? тоже самое что и для UNIQUE?

я вот документации очень много нагуглил, но не могу понять зачем это надо и как правильно это делать?

и чем отличается KEY от UNIQUE в данном случае?

Это сообщение отредактировал(а) gcc - 7.12.2009, 03:06
PM WWW ICQ Skype GTalk Jabber   Вверх
Zloxa
Дата 7.12.2009, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Цитата(gcc @  7.12.2009,  03:03 Найти цитируемый пост)
я так понял уникальным именно для topic?

topic, в данном случае - имя ограничения уникальности


Цитата(gcc @  7.12.2009,  03:03 Найти цитируемый пост)
а что значит    KEY

Цитата

KEY is normally a synonym for INDEX. ..... This was implemented for compatibility with other database systems.


Цитата(gcc @  7.12.2009,  03:03 Найти цитируемый пост)
и чем отличается KEY от UNIQUE в данном случае?

Цитата

A UNIQUE index creates a constraint such that all values in the index must be distinct. An error occurs if you try to add a new row with a key value that matches an existing row. For all engines, a UNIQUE index allows multiple NULL values for columns that can contain NULL.


Цитата(gcc @  7.12.2009,  03:03 Найти цитируемый пост)
я вот документации очень много нагуглил

Документацию не гуглить надо а читать.
Очень много не надо.
Все ответы на твои вопросы - на одной странице.

Это сообщение отредактировал(а) Zloxa - 7.12.2009, 14:24


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
gcc
Дата 17.12.2009, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 3
Всего: 17



а можно ли написать  так

PRIMARY KEY (id_pa, id_pf, id_un)

вместо KEY unik (id_pa, id_pf, id_un) ?

я видел некоторые так пишут, а некоторые нет

Это сообщение отредактировал(а) gcc - 18.12.2009, 01:34
PM WWW ICQ Skype GTalk Jabber   Вверх
gcc
Дата 18.12.2009, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 3
Всего: 17



ну вот например один запрос, как к нему индесы правильно стоят?
там ошибок нету?

Код

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`)



+PRIMARY KEY (`id_vf`, id_va, id_un )
INDEX viewing (viewing)
INDEX size_pf (size_pf)
INDEX created (created) - для сортировки


Код

| 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 | 



+ PRIMARY KEY ( id_pa, id_un )
INDEX viewing (viewing)
INDEX size_pf (size_pf)
INDEX created (created) - для сортировки
INDEX hidden_pa (hidden_pa)
INDEX privat_pa (privat_pa)


Код
| 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 | 


+PRIMARY KEY (`id_vfp`, id_vf, id_va, id_un )
Код

| 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' | 


+PRIMARY KEY (`id_co`, id_se, id_un )
INDEX created (created) - для сортировки
INDEX active_co (active_co) 
INDEX hiden_co (hiden_co) 
INDEX hiden_g_co_co (hiden_g_co) 
INDEX close_co (close_co) 

поиск по этом полям нужно будет делать:
UNIQUE host (host) - может быть NULL
UNIQUE forwarded (forwarded) - может быть NULL
UNIQUE ip (ip) - может быть NULL

Это сообщение отредактировал(а) gcc - 18.12.2009, 01:35
PM WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0549 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.