|
|
|
|
|
для: cheops
(22.11.2007 в 12:11)
| |
CREATE TABLE `table1` (
`entity_id` int(11) NOT NULL auto_increment,
`make_date` datetime,
`name` char(255),
`surname` char(255),
`email` char(255),
`city` char(255),
`parent_id` int(11) default '0',
PRIMARY KEY (`Id`),
KEY `parent` (`parent_id`)
) TYPE=MyISAM;
|
Мне интересно это обычное поведение MySQL или так получается из-за очобенностей структуры таблицы? (хотя зацепится тут можно только за KEY 'parent') | |
|
|
|
|
|
|
|
для: Axxil
(21.11.2007 в 15:01)
| | Хорошо бы посмотреть структуру таблицы some_id (оператор SHOW CREATE TABLE). | |
|
|
|
|
|
|
|
для: Trianon
(21.11.2007 в 19:42)
| | - | |
|
|
|
|
|
|
|
для: Axxil
(21.11.2007 в 15:36)
| | > Причём тут ORDER BY?
А что, по Вашему, означает SELECT * FROM tbl LIMIT n ?
>поставил сортировку по первичному (автоинкремент) ключу (ORDER BY entity_id) скорость не изменилась...
>А как тут explain поможет?
Покажет, применяются ли индексы, и если да - то какие. | |
|
|
|
|
|
|
|
для: Trianon
(21.11.2007 в 15:13)
| | Причём тут ORDER BY?
поставил сортировку по первичному (автоинкремент) ключу (ORDER BY entity_id) скорость не изменилась...
А как тут explain поможет? Тут же нет объединения таблиц или использования индексов. Просто обычная выборка из одной таблицы...
Я так понимаю тут оптимизатор мускульный как-то хитро работает? | |
|
|
|
|
|
|
|
для: Axxil
(21.11.2007 в 15:01)
| | Первый из запросов не имеет смысла, поскольку LIMIT не снабжен ORDER BY
Второй, вероятно, выполняется быстрее, т.к. пробег идет по первичному ключу, а не по данным.
Вообще же нужно смотреть план исполнения запроса (оператор EXPLAIN) | |
|
|
|
|
|
|
| Сегодня в целях оптимизации игрался с запросами и обнаружил такую штуку:
Запрос выводит записи из некоторой таблицы постранично.
Так вот, обычный в таких случаях запрос
SELECT *
FROM table1
WHERE some_id = 0
LIMIT 43875, 15
|
выполняется гораздо медленнее, чем тот же по результату:
SELECT *
FROM table1
WHERE Id>=43875
AND some_id = 0
LIMIT 0, 15
|
почему так?
И ещё одно интересное наблюдение:
SELECT *
FROM table1
WHERE Id>=43875
AND some_id <= 0
LIMIT 0, 15
|
выполняется быстрее чем
SELECT *
FROM table1
WHERE Id>=43875
AND some_id = 0
LIMIT 0, 15
|
вот это вообще для меня сюрприз... | |
|
|
|
|