CREATE TABLE IF NOT EXISTS `trr` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`idd` bigint(20) NOT NULL DEFAULT '0',
`c` varchar(255) NOT NULL DEFAULT '',
`e` varchar(255) NOT NULL DEFAULT '',
`name` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `idd` (`idd`),
KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
//В эту таблицу всегда действует один запрос такой
$idd=rand(1,5000);//Данная переменная может быть от 1 до 5000
$name='';//Здесь идет имя пользователя - они прибовляются по мере их регистрации (допустим сейчас их 100000)
$sfd=mysql_query("SELECT * FROM `trr` WHERE `idd`='$idd' AND `name`='$name' LIMIT 1");
$sfd1=mysql_fetch_array($sfd);
$sfd2=$sfd1['id'];
if(isset($sfd2)){
echo $sfd2;
}
Не могу понять следующее - нужно ли мне индекс и для "`idd` bigint(20)" выставлять или нет.
На хабре полностью статью прочитал - понял то что Таблица разделила индекс `idd` и `name` еще в две подтаблицы - для быстрой выборки InnoDB, и если я делаю запрос с "WHERE `idd`='$idd' AND `name`='$name'" это походу бессмысленно (лучше чтоб был только один индекс `name` - так будет быстрее она думать?).
Последний вопрос - существует таблица допустим `ttttt` - в ней 30 значений, и 10 из этих значений являются индексами - (как я понял принцип работы InnoDB - "Таблица разделяется на 10 подтаблиц (так как в ней находится 10 индексов) - и при UPDATE или INSERT она делает аж 10 запросов в базу (тоесть заменяет либо создает в 10 подтаблиц строки)") - я правильно понимаю?