gRigoriy
Новичок
Помогите разобраться в индексах
Прочитал много инфы, в том числе последни phpinside, но как то ясности в вопросе использовании индексов нет =(. Собственно поставила в тупик ситуация:
Есть таблица tbl1 (10651 строк), в ней хранится список компаний.
[sql]
CREATE TABLE `tbl1` (
`id` int(11) NOT NULL auto_increment,
........
`company` varchar(255) NOT NULL default '',
`url` varchar(255) NOT NULL default '',
.........
`user_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`,`url`)
);[/sql]
И запрос на вывод 10 последних записей... [sql]SELECT `url`,`company` FROM `tbl1` ORDER by `id` DESC LIMIT 10;[/sql]
На что EXPLAIN отвечает
Что, как я понимаю, свидетельствует о том, что для того чтобы вывести 10 последних записей MySQL просматривает всю таблицу?! Хотя, как я думал, должна была просмотреть PRIMARY KEY. В чем же причина такого поведения? И как все, ж таки, в данном случае вывести 10 последних записей, опираясь на информацию из индекса? Точнее даже - как уменьшить количество просматриваемых ячеек?
И второе: может кто нибудь знает хорошую доку на русском по применению индексов (кроме мана mysql)?
Прочитал много инфы, в том числе последни phpinside, но как то ясности в вопросе использовании индексов нет =(. Собственно поставила в тупик ситуация:
Есть таблица tbl1 (10651 строк), в ней хранится список компаний.
[sql]
CREATE TABLE `tbl1` (
`id` int(11) NOT NULL auto_increment,
........
`company` varchar(255) NOT NULL default '',
`url` varchar(255) NOT NULL default '',
.........
`user_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`,`url`)
);[/sql]
И запрос на вывод 10 последних записей... [sql]SELECT `url`,`company` FROM `tbl1` ORDER by `id` DESC LIMIT 10;[/sql]
На что EXPLAIN отвечает
Код:
| table | type | possible_keys | key | key_len | ref | rows | Extra |
tbl1 | index | NULL | PRIMARY | 4 | NULL | 10651
И второе: может кто нибудь знает хорошую доку на русском по применению индексов (кроме мана mysql)?