|
|
|
Как лучше индексировать и выбрать primary key?
|
|||
|---|---|---|---|
|
#18+
Есть таблица CREATE TABLE IF NOT EXISTS `sem_morph` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `base` varchar(255) NOT NULL, `itag` smallint(6) unsigned NOT NULL, `np` tinyint(1) NOT NULL DEFAULT '0', `bik` text NOT NULL, `sample` text NOT NULL, `updated` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `base` (`base`,`itag`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Сочетание base+itag в ней уникально. Таблица не связана внешними ключами сдругими таблицами. Основные опреации над ней - это "Insert on duplicate update" и select ... where itag=val AND base IN(много вариантов) Не будет ли оптимальнее сделать первичным ключом base+itag, а инкрементный id убрать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 10:16:59 |
|
||
|
Как лучше индексировать и выбрать primary key?
|
|||
|---|---|---|---|
|
#18+
Ну, тогда можно и убрать. Если не планируется в будущем связывать таблицу с другими. Lusikaсделать первичным ключом base+itagесли бОльшая часть запросов - такие Lusikaselect ... where itag=val AND base IN(много вариантов), то, наверное, лучше наоборот - (itag,base) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 12:03:40 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38325291&tid=1836483]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 380ms |

| 0 / 0 |
