Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP: базы данных

Войти
Регистрация
Восстановить пароль
 
dadli
10 / 10 / 1
Регистрация: 08.05.2011
Сообщений: 142
#1

что такое индекc ? (для таблиц) - PHP БД

16.08.2011, 11:20. Просмотров 910. Ответов 5
Метки нет (Все метки)

приветствую всем, естъ вопрос о индексации таблиц.

тут читал

Предположим что наша таблица Заказчиков имеет тысячи входов, а вы хотите
найти заказчика с номером=2999. Так как строки не упорядочены, ваша
программа будет просматривать всю таблицу, строку за строкой, проверяя
каждый раз значение поля cnum на равенство значению 2999. Однако, если
бы имелся индекс в поле cnum , то программа могла бы выйти на номер
2999 прямо по индексу и дать информацию о том как найти правильную
строку таблицы.


ну допустим что ето таблица содержит 8000 строку, и у него естъ что то такого вида:

cnum | name |
------------------
1 | john |
2 | jimmy |
3 | billy |
............. |
............. |
2999 | jack |
............. |
............. |
8000 | tom |


ну вот я не понимаю, что такое ето индекс, что с помошю им, програма может наити прямо на строку где cnum = 2999, если он не будитъ проверятъ другие значении поле cnum-а

ето запрос:
SQL
1
SELECT `name` FROM `sometable` WHERE `cnum` = 2999
я так понимаю:
програма проверяет первое значение поле cnum - если ето значение не 2999, то програма проверяет втарое значение поле cnum.... и так далее до момента когда програма не наидиот значение - 2999


а говарят что если ми индексируем поле cnum, програма уже будетъ с помошю ето индекса, прямо наити поле cnum где он павно 2999, а как ето происходит не понимаю,
вот мои вопрос:
что такое ето индекс, что с помошю им, програма может наити нужное значение, без проверки других значении ?

ну если пиняли мои вопрос отвечаите пожалуиста, я очен хочу понят сутъ етого индекса и не хочу исползоватъ его слепо.
спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.08.2011, 11:20
Я подобрал для вас темы с готовыми решениями и ответами на вопрос что такое индекc ? (для таблиц) (PHP БД):

что такое классы? - PHP
вот столкнулся с таким вопросом, что такое классы? Почти во всех скриптах встречаются классы, залесс в гугл, там в основном пишут как их...

что такое пхп? - PHP
что такое пхп?

Что такое демон? - PHP
Привет, братья по разуму!!! Давно уже слышал про каких-то демонов в пхп и вот сегодня снова встретился с таким термином. На одном...

Что такое символические ссылки? - PHP
Как это работает и как пользоваться опцией FollowSymLinks?

Что такое CGI скрипт? - PHP
Скажите своими словами что такое CGI скрипт. Прочитал кучу определении, даже на википедии побывал, но никак не пойму что это. Как это...

Расскажите что такое xdebug? - PHP
Куда его устанавливать надо? На сервер или на комп? Если на сервер, то как его установить на FreeBSD? Директивы php.ini тоже на сервере...

5
solar_wind
760 / 751 / 42
Регистрация: 06.07.2009
Сообщений: 2,988
Завершенные тесты: 1
16.08.2011, 11:26 #2
dadli, Все очень просто, разгадка в "теории оптимизации".
Допустим у тебя 8000 чисел, а найти тебе нужно число 2999
В индексах эти числа упорядочены.
Простейший вариант:
Берем число из середины и сравниваем с искомым, в зависимости от этого отбрасываем ненужную половину чисел. И так далее..
В итоге число 2999 мы находим не за 2000 просмотров, а за 10, вот и выигрыш...
1
taras atavin
3888 / 1762 / 92
Регистрация: 24.11.2009
Сообщений: 27,565
16.08.2011, 11:35 #3
Тему надо в какой нибудь раздел по СУБД снести, так как к php эти индексы ни какого отношения не имеют.
0
dadli
10 / 10 / 1
Регистрация: 08.05.2011
Сообщений: 142
16.08.2011, 11:56  [ТС] #4
vitaly1981
я так понял что програма сначала берет число 4000, (так как в етом случе 4000 середина из диапазона 1 - 8000)
ага 2999 < 4000, значении више 4000 игнорирует. уже дяпазон естъ 1 - 4000
потом берет 2000
так как 2999 > 2000, значении ниже 2000 и игнорирует. уже дяпазон естъ 2000 - 4000
потом берет 3000....и так далее, пока не наидет нужное значение

ето так?

taras atavin
ну просто в етом разделе болше люди посматривают и ответи дают бистрее, а в разделе СУБД может несколко час, а может бит всю дня ждатъ, извиняюс с модерaтором )
0
solar_wind
760 / 751 / 42
Регистрация: 06.07.2009
Сообщений: 2,988
Завершенные тесты: 1
16.08.2011, 12:01 #5
Что то типа, ведь числа могут храниться не 1,2,3,4,5,6,7,8,9.... а 1,2,4,7,9.....
Понимаешь в чем смысл? А перейти на нужную по порядковому номеру запись это не проблема, это чисто вопрос вычисление нужной области памяти и он реализуется СУБД и без тебя.

Добавлено через 1 минуту
значение 2999 может по порядку быть и 1651. )
1
dadli
10 / 10 / 1
Регистрация: 08.05.2011
Сообщений: 142
16.08.2011, 12:07  [ТС] #6
vitaly1981,
всио пнятно, балшое вам спасибо за помош )
0
16.08.2011, 12:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2011, 12:07
Привет! Вот еще темы с ответами:

Что хуже, несколько таблиц или много записей? - PHP БД
Добрый день. На сайте выделено 4 логических раздела, в каждом разделе представлены статьи которые так же можно комментировать. Собственно...

Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами? - C++
Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?

Что такое IIS и что такое PWS? Почему одно без другого не работает? - C# ASP.NET
вот уже второй день пытаюсь немного разобраться в АСП. накидал небольшую тестовую страничку. но с серверами я ничего не понимаю! что...

Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа? - C++
Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru