Оптимизация таблицы...

Solid

Drosera anglica
Оптимизация таблицы...

Ещё раз извиняюсь за многозначность темы...

И так, есть таблица содержащая 300000 записи. Вид таблицы:
song_id|album_id|song_name|song_url|song_hits
При запросе:
PHP:
SELECT * FROM `song` LIMIT 1,10
Выборка происходит за мельчайшие милисекунды. Если же мы лимит поднимаем до, скажем 200000:
PHP:
SELECT * FROM `song` LIMIT 200000,10
То выборка длится почти пол секунды.
Подскажите пожалуйста, в какую сторону надо капать, что бы оптимизировать такой запрос.
song_id - как primary, по этому запрос вида:
PHP:
SELECT * FROM `song` WHERE song_id>200000 LIMIT 30
Длиться миллисекунды.

Заранее благодарен за ответ,
Дмитрий.
 

Кром

Новичок
Сделай explain и скопируй сюда результат. Заодно скажи какой будет результат если запрос будет вида:
SELECT * FROM `song` ORDER BY `song_id` LIMIT 200000,10
 

Solid

Drosera anglica
PHP:
SELECT * FROM `song` LIMIT 200000,10
Код:
 id  	 select_type  	 table  	 type  	 possible_keys  	 key  	 key_len  	 ref  	 rows  	 Extra
1 	SIMPLE 	song 	ALL 	NULL 	NULL 	NULL 	NULL 	274790
PHP:
SELECT * FROM `song` ORDER BY `song_id` LIMIT 200000,10
Код:
id  	 select_type  	 table  	 type  	 possible_keys  	 key  	 key_len  	 ref  	 rows  	 Extra
1 	SIMPLE 	song 	index 	NULL 	PRIMARY 	4 	NULL 	274790
Второй запрос выполняеться в 4 раза дольше.
 

Кром

Новичок
Тут уже, видимо, ничего ускорить нельзя.
Есть вариант, сделать две таблицы. В первой таблице оставить одни int'ы, а во вторую вынести song_name, song_url и song_id.
Делать два запроса. Первым из одной таблицы выбирать song_id, а вторым из второй таблицы через IN() выбирать текстовые данные. Это, в некоторых случаях, может дать ускорение до 40%.
 
Сверху