Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как работают индексы (хочу уточнить)
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Как работают индексы (хочу уточнить)

Страниц (1): [1]
 

1. SanSan - 18 Июня, 2013 - 14:04:31 - перейти к сообщению
Доброго времени суток!

Предыстория:
В продолжение темы с Гугл картами, к-рую я недавно в этом разделе создавал (название не помню, но это здесь не важно). Разобрался я с картами, научился получать координаты, переводить их в мой формат (так нужно). От идеи с бинарным поиском (на PHP) в файле отказался, т.к. понял, что действительно, как и написали мне тогда, MySQL использует тоже бинарный поиск. Хочу использовать для хранения и поиска MySQL. Данных много, на одну таблицу сотни миллионов строк. Но зато всего два поля, числовых, integer и byte, если выражаться в терминах языков программирования.

Теперь вопрос:
Вот скрипт:
create table freshtel ( point int unsigned not null primary key, coverage tinyint unsigned not null );
load data infile "freshtel.txt" into table freshtel;

Если я задаю полю primary key, то индекс сам создается? При создании таблицы? Если, насколько я понял из мануалов, индекс - это отсортированная копия таблицы, то там же пока пусто, что там сортировать? Значит индекс по идее должен обновляться с каждой заливкой новых данных.

Если я потом буду несколько раз добавлять с помощью load data infile новые порции данных, могу я быть уверен что индекс будет обновляться, и поиск в таблице будет происходить с максимальной скоростью?

Третий вопрос, так, интересно просто. Данные у меня уже отсортированы заранее. Можно ли как-то заюзать этот факт на пользу делу? Типа, сказать MySQL - "это поле уже отсортировано, можешь производить прямо по нему двоичный поиск, без индекса", или такого еще не придумали?

Кстати, заметил, при вставке данных, бывает по порядку добавляет строки, так же как они идут в файле, а бывает наоборот, с конца (при вставке первой порции я это заметил).
2. LIME - 18 Июня, 2013 - 14:09:01 - перейти к сообщению
индекс создается
обновляется сам при изменении таблицы
понятия сортированного хранения нет
сортировать надо при выборке
(Добавление)
SanSan пишет:
индекс - это отсортированная копия таблицы
нет
это бинарное дерево
(Добавление)
индексирование используется для ускорения выборки
однако это замедляет изменение таблицы
так как необходимо переиндексировать
(Добавление)
поэтому более одного ряда лучше добавлять одним запросом
3. SanSan - 18 Июня, 2013 - 15:01:19 - перейти к сообщению
Спасибо! Здорово

 

Powered by ExBB FM 1.0 RC1