есть две таблицы по содержании и структуре идентичные, только одна тип myIsam, а другая MEMORY, вроде бы все запросы к Memory-таблицы должны осуществляться быстрее... для SELECTа без сортировки так и есть (0.0020 vs 0.0006 - средние показатели) , но если к SELECTу добавляю ORDER BY, то myisam оказывается быстрее чем memory-таблица (0.0008 vs !!!! 0.0050). Из-за чего такое может быть ??? Поле по которому сортируется выборка типа INT и проиндексировано...
Потому что мемори - это тип предназначенный для быстрого доступа к статике. MyISAM предназначен для быстрых операций над данными (за счёт того что у него отрезаны почти все механизмы по обеспечению целостности) Смотри "MySQL сравнение типов таблиц" PS: разбежка всё равно слишком большая. посмотри, используются ли в обеих таблицах индексы для полей по которым идёт сортировка
Нужно учитывать что для таблиц типа memory поддерживаются индексы двух типов - hash и btree. Hash - очень быстрый поиск при сравнении =, но отвратная сортировка, т.к. по хешам сортировать безполезно. В итоге full scan. Btree более медленен в поиске, но зато поддерживает все остальные операции нормально. В общем читать тут: http://dev.mysql.com/doc/refman/5.5/en/ ... ngine.html О типах индексов: http://dev.mysql.com/doc/refman/5.5/en/ ... dexes.html До просветления и понимания того, что там описано. Тонкостей много.
Спасибо за подсказку, заодно узнал, что для memory-таблиц можно задавать тип индекса и btree и hash (в русском мане на mysql.ru в описании синтаксиса CREATE INDEX, этого почему то нет). Разобрался, все гуд.
to igordata to titch ... то бишь индекс по полю есть. А проблема, как подсказал Psih заключалась в типе индекса