![]() |
Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте, объясните пожалуйста (или поделитесь ссылкой) каков механизм (т.е. что мускул делает/смотрит/проверяет/создаёт и в какой последовательности) работы следующих типов запросов:
select если ищем по не ключевому полю;
select если ищем по не ключевому полю по диапазону (т.е. например SELECT name FROM users WHERE date BETWEEN date1 AND date2);
select если ищем по ключевому полю;
select если ищем по ключевому полю по диапазону (т.е. например (id - ключевое поле) SELECT name FROM users WHERE id BETWEEN 1 AND 1000);
optimize;
update;
insert;
Хотелось бы знать что как работает, что создаётся, что может кешироваться, и соответственно сколько времени уходит на каждый этап.
Отредактированно AngelInTwilight (16.01.2012 21:10:24)
Неактивен

1. читает табличку последовательно
2. аналогично
3. читает индекс, потом данные
4. аналогично
5. перестраивает индексы так, чтобы они были более равномерно распределены
6. обновляет ![]()
7. вставляет ![]()
Неактивен
Йохохо) спасибо, кэп!
а то что например select по ключевому полю там создаёт деревья и как-то оптимизирует поиск это не?
Неактивен
В третьем пункте сказано: читает индекс, потом данные.
Индекс хранится в виде бинарного дерева и по нему происходит поиск нужного значения.
Но поиск по индексу происходит лишь в том случае, когда это более эффективно, чем прочитать таблицу целиком (FTS - Full Table Scan).
Неактивен