berkut
Новичок
limit - тормоза, full table scan
Вообщем есть таблица с ~11000 записей, на диске занимает ~1Гб
И тут не понятная проблема с выборкой - LIMIT 1, 10 - летает,
LIMIT 100, 10 - подтормаживает, LIMIT 10000, 10 - жуть тормозит.
Сделал подобную тестовую таблицу:
	
	
	
		
Запрос:
	
	
	
		
Результаты на моей машине:
{VAR} = 1 - 0,2 сек.
{VAR} = 100 - 0,03 сек.
{VAR} = 1000 - 0,09 сек.
{VAR} = 10000 - ~23 сек.
Проблема в том, что для поиска 10000 строки
муська сканирует
всю таблицу, вместо того, что-бы использовать
индекс id.
unique key по id + use index не спасают.
Сделал такой костыль:
	
		
эти запросы выполняются мгновенно
ещё как вариант:
	
		
но это всё не красиво и не оптимально.
Как всё-таки заставить муську при select * ... limit использовать индекс
								Вообщем есть таблица с ~11000 записей, на диске занимает ~1Гб
И тут не понятная проблема с выборкой - LIMIT 1, 10 - летает,
LIMIT 100, 10 - подтормаживает, LIMIT 10000, 10 - жуть тормозит.
Сделал подобную тестовую таблицу:
		Код:
	
	CREATE TABLE `test_count` (
  `id` mediumint(9) unsigned NOT NULL auto_increment,
  `field2` text NOT NULL,
  `field3` text NOT NULL,
  `field4` text NOT NULL,
  `field5` longblob,
  `field6` longblob,
  `field7` longblob,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM
		Код:
	
	SELECT * FROM test_count LIMIT {VAR}, 10{VAR} = 1 - 0,2 сек.
{VAR} = 100 - 0,03 сек.
{VAR} = 1000 - 0,09 сек.
{VAR} = 10000 - ~23 сек.
Проблема в том, что для поиска 10000 строки
муська сканирует
всю таблицу, вместо того, что-бы использовать
индекс id.
unique key по id + use index не спасают.
Сделал такой костыль:
		Код:
	
	SELECT id FROM test_count LIMIT 10000, 10;
+
SELECT * FROM test_count
WHERE id IN (RESULTS_FROM_PREVIOUS_QUERY);ещё как вариант:
		Код:
	
	SELECT * FROM test_count, (SELECT id FROM test_count ORDER BY id LIMIT 10000, 10) t 
WHERE test_count.id=t.id;Как всё-таки заставить муську при select * ... limit использовать индекс
 
	            
 
 
		
 
 
		
