|
Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Чем KEY отдличается от INDEX? |
|
[решено] Чем KEY отдличается от INDEX?
|
Ночной странник Сообщения: 4050 |
Чем KEY отдличается от INDEX?
|
|
------- Отправлено: 22:49, 17-06-2004 |
just mar Сообщения: 3904
|
Профиль | Отправить PM | Цитировать если ты имеешь в виду PRIMARY KEY и INDEX в MySQL, то в общем, ничем. (кроме того, что PRIMARY KEY единственный и неповторимый
![]() |
Отправлено: 10:39, 18-06-2004 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Ветеран Сообщения: 1864
|
Профиль | Отправить PM | Цитировать Вообще вроде в теории INDEX-это поле, которое просто указывает на определённые запись данных, то есть по идеи INDEX может повторятся в одной и той же таблице, если он указывает на одинаковые записи данных
PRIMARY KEY - это вроде индекс, но его значения не повторяются, то есть как написала mar-он единственный и неповторимый Добавлено: поэтому поле с auto_increment будет всегда PRIMARY, так как его значения не могут повторятся |
------- Отправлено: 19:06, 18-06-2004 | #3 |
Ночной странник Сообщения: 4050
|
Профиль | Сайт | Отправить PM | Цитировать mar
в MySQL есть еще и просто KEY. Хранится он в таблице индексов. для оптимизации работы есть ANALYZE TABLE причем в документации сказано что она оптимизирует KEY причем это правда, я наблюдал прирост в 100раз (!), но там ничего не сказано об оптимизации INDEX. чтоты разрешить что лучьше использовать для ускорения поиска и в чем их разничия я напишу пару тестов, а потом приведу здесь их результаты. |
------- Отправлено: 22:08, 18-06-2004 | #4 |
Ночной странник Сообщения: 4050
|
Профиль | Сайт | Отправить PM | Цитировать 6) KEY vs INDEX и нужно ли применять ANALYZE TABLE.
Многие слышали про KEY и про INDEX, но когда им задают вопрос «а чем они отличаются?» они затрудняются ответить. Для того чтобы найти ответ на этот вопрос я решил произвести несколько тестов. Первый тест был на создание таблицы, я создавал таблицу с ключами по нескольким столбцам, потом создавал такую же таблицу, но в место KEY использовал INDEX, результат – размер таблиц идентичен. Скорость выборки была тоже идентична. Примечание: после каждого добавления большого куска данных применялся ANALYZE TABLE. Теперь я создаю те же самые таблицы, но без вызова ANALYZE TABLE. Для таблицы с индексами размер идентичен, что и с вызовом ANALYZE TABLE, аналогично и для KEY. Теперь перейдем к тестам на скорость выборки, и тут нас ожидает сюрприз – скорость выборки упала в 3.3 раза. Выводы: INDEX и KEY хранятся одинаково, для ускорения выборки обязательно нужно применять ANALYZE TABLE, влияние на скорость выборки у них идентичное, основное различие в синтаксисе их применения! |
|
------- Отправлено: 18:20, 19-06-2004 | #5 |
just mar Сообщения: 3904
|
Профиль | Отправить PM | Цитировать Влад, существует MySQL, версии которого несколько отличаются друг от друга и все - от стандарта SQL
Поэтому, наверное, можно эксперементировать, а можно посмотреть, что предлагает реляционная модель данных и что из этого имеется в MySQL индекс (index) в реляционных базах данных вообще - *своего рода предметный указатель по атрибутам (полям), дающие ссылки на строки (записи), в которых встречается то, или иное значение. Таким образом, индекс обеспечивает увеличение скорости доступа - выборок. Лучше поцитируем что-нибудь умное ![]() Цитата:
Цитата:
Еще один момент - и не только в MySQL: СУБД "выбирают", использовать ли индекс, или обойтись без него. Хорошо, если правильно ![]() Теперь ключ (Key) - в релизах MySQl имеет несколько невыраженный характер (в отличие от тестовых новых версий), о чем, помнится, писалось в руководстве по MySQL. (поэтому primary key там отличается от index только свойством primary и, *требованием к уникальности данных) В общем же случае в реляционных базах данных ключи работают для сохранения целостности данных (я упоминала о внешнем ключе - в MySQL он появился, насколько я понимаю только в последних версиях и не для всех типов таблиц, а в стандарте SQL это понятие имеется) Существуют по крайней мере 3 типа ключей (может что еще кто знает - поправте): - candidate (по-моему, в MySQL нет, или есть, но в последних версиях) Уникальные поля (одно, или комбинация из нескольких), однозначно идентифицирующие запись. - primary (имеется в MySQL) отличается от candidate единственностью. - foreign (только в последних версиях MySQL) - набор атрибутов (полей), *присутствующих в нескольких таблицах и являющимся первичным ключеи для одной из них. Обеспечивают связь данных нескольких таблиц и целостность данных (не висят мертвые души в одних таблицах при удалении данных из других таблиц. Ну, и по поводу оптимизации: ANALYZE TABLE, OPTIMIZE TABLE применять, несомненно стоит, хотя бы потому, что при изменении таблиц (удалении, добавлении записей) надо оптимизировать (дефрагментировать) файловое *пространство и перестроить индексы и ключи. (в старые добрые времена при сбоях в машине, аварийном выключении питания и т.д. надо было переиндексировать таблицы - тогда они назывались базами данных, - замечательной тогда СУБД FoxPRO, а то индексы ломались в хлам) При этом - NB - MySQL - не единственная СУБД, в Oracle, Postgresql данные хранятся просто совсем не так (хотя мы и видим все те же таблицы) Уфф Все надоело писать, пусть желающие правят-дописывают ![]() |
||
Отправлено: 01:46, 20-06-2004 | #6 |
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать mar, спасибо Вам большое. да Вы ещё и прекрасная наша половина, оказывается!
всю жизнь в ИТ, и только сегодня регнулся на старом добром осзоне, и то, только ради того, чтобы лично Вас отблагодарить, весь инет набит рассуждениями, включая разные киберфорумы (от которых уже неприятно сидеть в нете, хотя наткнулся тут на топ который был более-менее активен и интересен), так вот, по теме только Ваш пост помог. Мир Вам и много послушных детей ![]() |
Отправлено: 17:03, 25-08-2016 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Как скрыть разрешение для сайта, чтоб не было index.html, а просто name.ru/index? | maasja | Вебмастеру | 1 | 25-06-2009 19:10 | |
Службы - Сообщение сервиса: WIBU-KEY Network Server is NOT running! - в чем дело? | DimDau | Microsoft Windows Vista | 1 | 15-08-2008 17:41 | |
Загрузка - inserting an index entry into index $0 of file 32772 | gennchik | Microsoft Windows 2000/XP | 0 | 29-10-2007 19:52 | |
BSOD - chkdsk: Inserting an index entry into index $0 of file | ramo | Хочу все знать | 4 | 16-08-2007 22:07 | |
Использование index.html вместо index.php | BYBY | Вебмастеру | 14 | 05-12-2006 14:06 |
|