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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как работают индексы (хочу уточнить)

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
SanSan
Отправлено: 18 Июня, 2013 - 14:04:31
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




Доброго времени суток!

Предыстория:
В продолжение темы с Гугл картами, к-рую я недавно в этом разделе создавал (название не помню, но это здесь не важно). Разобрался я с картами, научился получать координаты, переводить их в мой формат (так нужно). От идеи с бинарным поиском (на 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 - "это поле уже отсортировано, можешь производить прямо по нему двоичный поиск, без индекса", или такого еще не придумали?

Кстати, заметил, при вставке данных, бывает по порядку добавляет строки, так же как они идут в файле, а бывает наоборот, с конца (при вставке первой порции я это заметил).
 
 Top
LIME
Отправлено: 18 Июня, 2013 - 14:09:01
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




индекс создается
обновляется сам при изменении таблицы
понятия сортированного хранения нет
сортировать надо при выборке
(Добавление)
SanSan пишет:
индекс - это отсортированная копия таблицы
нет
это бинарное дерево
(Добавление)
индексирование используется для ускорения выборки
однако это замедляет изменение таблицы
так как необходимо переиндексировать
(Добавление)
поэтому более одного ряда лучше добавлять одним запросом
 
 Top
SanSan
Отправлено: 18 Июня, 2013 - 15:01:19
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




Спасибо! Здорово
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB