первичный уникальный индекс phpmyadmin
Работа с индексами в MySQL и MariaDB
Индексы позволяют оптимизировать работу с базой — данные сортируются и СУБД не приходится искать значения среди всех записей. На практике, это может сократить время обработки запросов на несколько порядков.
Данная инструкция применима по отношению как к MySQL, так и MariaDB. В примерах будет использоваться таблица с названием table_test и индекс с названием index_test.
Для больших таблиц не создавайте индексы при помощи phpMyAdmin или других веб-инструментов, так как по умолчанию, интерпретатор PHP настроен на ограниченное время обработки скрипта, а процесс создания индекса может затянуться. Это может привести к потери данных.
Прежде чем начать, правильным будет создадать резервную копию базы.
Командная оболочка
Заходим в командную оболочку MySQL или MariaDB:
* под учетной записью root с запросом пароля.
Выбираем базу, с которой будем работать:
* выбрана база с именем base1
Посмотреть индексы
Прежде чем начать, стоит убедиться в отсутствии индексов, чтобы не создать дубли (инструкция if not exists не работает для create index).
Увидеть имеющиеся индексы:
SHOW INDEX FROM table_test;
Простой индекс
Применяется для ускорения выборки данных.
Вводим следующую команду для создания простого индекса:
mysql> CREATE INDEX index_test ON table_test (name);
* в данном примере создан простой индекс, ускоряющий выборку данных, с именем index_test для поля name таблицы table_test
mysql> DROP INDEX index_test ON table_test;
Полнотекстовый поиск
Необходим для поиска данных с помощью функции MATCH. Индекс создается для таблиц типа «MyISAM» и полей с типом «text».
mysql> CREATE FULLTEXT INDEX index_test ON table_test (name);
mysql> DROP INDEX index_test ON table_test;
Уникальный индекс
Обеспечит уникальность данных для проиндексированного поля.
mysql> CREATE UNIQUE INDEX index_test ON table_test (name);
mysql> DROP INDEX index_test ON table_test;
phpMyAdmin
Способ более удобный, но, как сказано выше, его не стоит применять в продуктивной среде.
В правой части кликаем по необходимому индексу для его создания:
Для удаление в том же разделе Структура кликаем по Индексы и в раскрывшемся списке удаляем индекс:
Создание связей между таблицами с помощью phpmyadmin
В этой заметке мы научимся создавать связи между таблицами в базе данных MySQL с помощью phpmyadmin. Если по какой-то причине вы не желаете использовать phpmyadmin, смотрите приведенные ниже SQL-запросы.
Почему же связи удобно держать в самой базе данных? Ведь эту задачу обычно решает так и само приложение? Все дело в ограничениях и действиях при изменении, которые можно наложить на связи.
Например, можно запретить удалять категорию, если с ней связана хотя б одна заметка. Или удалить все заметки, если удалена категория. Или установить NULL в связующее поле. В любом случае, с помощью связей повышается отказоустойчивость и надежность приложения.
Для того, чтобы связать таблицы по полям, необходимо сначала добавить в индекс связываемые поля:
В phpmyadmin выбираем таблицу, выбираем режим структуры, выделяем поле, для которого будем делать внешнюю связь и кликаем Индекс.
Обратите внимание на разницу между «Индекс» и «Уникальный». Уникальный индекс можно использовать, например, до поля id, то есть там, где значения не повторяются.
Это же действие можно сделать с помощью SQL-запроса:
Аналогично добавляем индекс (только в моем случае теперь уже уникальный или первичный) для таблицы, на которую ссылаемся, для поля id. Поскольку поле id у меня идентификатор, для него делаем первичный ключ. Уникальный ключ мог бы понадобится для других уникальных полей.
С помощью SQL-запроса:
Теперь осталось только связать таблицы. Для этого кликаем внизу на пункт Связи:
Теперь для доступных полей (а доступны только проиндексированные поля) выбираем связь с внешними таблицами и действия при изменении записей в таблицах:
Через SQL-запрос:
на этом все, таблицы связаны через foreign key.
Создание связей между таблицами с помощью phpmyadmin
Далее научимся создавать связи между таблицами в базе данных MySQL с помощью phpmyadmin. Если по какой-то причине вы не желаете использовать phpmyadmin, смотрите приведенные ниже SQL-запросы.
Почему же связи удобно держать в самой базе данных? Ведь эту задачу обычно решает так и само приложение? Все дело в ограничениях и действиях при изменении, которые можно наложить на связи.
Например, можно запретить удалять категорию, если с ней связана хотя б одна заметка. Или удалить все заметки, если удалена категория. Или установить NULL в связующее поле. В любом случае, с помощью связей повышается отказоустойчивость и надежность приложения.
Для того, чтобы связать таблицы по полям, необходимо сначала добавить в индекс связываемые поля:
Обратите внимание на разницу между «Индекс» и «Уникальный». Уникальный индекс можно использовать, например, до поля id, то есть там, где значения не повторяются.
Это же действие можно сделать с помощью SQL-запроса:
Аналогично можно добавить индекс (только в моем случае теперь уже уникальный или первичный) для таблицы, на которую ссылаемся, для поля id. Поскольку поле id у меня идентификатор, для него делаем первичный ключ. Уникальный ключ мог бы понадобится для других уникальных полей. Но так как мы его уже создали, принимаем информацию к сведению и идём дальше
Теперь осталось только связать таблицы. Для этого кликаем внизу на пункт Связи:
Теперь для доступных полей (а доступны только проиндексированные поля) выбираем связь с внешними таблицами и действия при изменении записей в таблицах:
Через SQL-запрос:
на этом все, таблицы связаны через foreign key.
Теперь пробуем добавить записи в таблицу Country:
Индексы в MySQL
В предыдущих статьях я часто упоминал про индексы в MySQL. и я обещал, что скоро о них расскажу. Так вот, это время пришло, и сегодня Вы узнаете об индексах MySQL, об их назначении и о том, как их создавать.
Допустим, в нашей таблице находится 1000000 записей. У каждой записи есть уникальный идентификатор ID. И, допустим, нам надо вытащить записть с ID = 530124. Если нет индекса, то MySQL будет поочерёдно перебирать все записи в таблице, пока не найдёт нужную. В худшем случае, он будет вынужден перебрать 1000000 записей. Разумеется, это будет очень долго. А если бы был индекс (то есть поле было бы отсортировано), то выборка записи произошла бы в среднем в 100 000 раз быстрее. Как видите, выгода очевидна.
Ещё один небольшой минус индексов в MySQL заключается в том, что запросы на вставку новых записей заставляют проводить сортировку таблицы заново. В результате, вставка новых записей будет происходить несколько дольше обычного. Но не забывайте, что в большиинстве случаев делать это приходится гораздо реже, чем делать выборку, поэтому данный минус не существенен.
Как сделать индекс в MySQL?
Для первичных ключей (PRIMARY KEY) индекс создаётся автоматически, а вот для других полей последовательность действий в PHPMyAdmin следующая:
И, напоследок, хочется сделать небольшое резюме, чтобы Вы поняли: «Когда надо создавать индексы MySQL«:
И ещё кое-что. Если вдруг Вы видите, что Ваши запросы на выборку очень сильно тормозят, то проанализируйте причину этого. Скорее всего, надо просто добавить индекс. В общем, тестируйте, и всё станет понятно.
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Комментарии ( 4 ):
SELECT id,title,description,view FROM data WHERE MATCH(text) AGAINST(‘$search’). Как-то так. Рылся в интернете, только такое нашёл не знаю, может как-то по-другому надо?
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2021 Русаков Михаил Юрьевич. Все права защищены.
Работа в phpMyAdmin
В статье мы расскажем, что такое phpMyAdmin, как зайти в phpMyAdmin и как создать, изменить или удалить таблицу в базе данных phpMyAdmin.
Как войти в phpMyAdmin
Войти в phpMyAdmin можно через панель управления хостингом ISPmanager по инструкции:
Чтобы подключиться к phpMyAdmin, используйте базу данных «u1234567_default», которая автоматически создается в панели управления на некоторых тарифах. Если на вашем тарифе нет базы данных или вы хотите создать другую, используйте инструкцию: Основы работы с МySQL.
2. Чтобы войти в phpMyAdmin введите логин и пароль и нажмите Login.
Готово, вы вошли в phpMyAdmin.
Если вы забыли свой логин или пароль, его можно посмотреть в конфигурационном файле сайта. Если ваш сайт создан не на CMS, обратитесь к разработчику. Для этого предоставьте ссылку вида «https://serverXX.hosting.reg.ru/phpmyadmin/», где вместо serverXX.hosting.reg.ru — будет адрес вашего сервера хостинга.
Если пароль не подходит, сменить его можно по инструкции: Основы работы с MySQL.
Важно: не путайте логин и пароль пользователя базы данных с логином и паролем от услуги хостинга (u1234567).
Работа с таблицами phpMyAdmin
Редактирование может привести к некорректной работе сайта. Перед внесением любых изменений в базу данных, сделайте бэкап или обратитесь к разработчикам.
В phpMyAdmin можно создать, удалить и изменить таблицы. Перед началом работы авторизуйтесь в phpMyAdmin.
Как добавить новую таблицу в phpMyAdmin
Выберите нужную базу данных.
В разделе «Создать таблицу» введите Имя новой таблицы, нужное количество столбцов и кликните Ок:
Затем внесите данные:
Имя каждого столбца;
Тип данных к каждому столбцу;
Длина значения строки в таблице;
По умолчанию — значение по умолчанию, которое добавляется, если строка пустая;
Сравнение — кодировка данных;
NULL — строка в таблице может быть пустой;
PRIMARY — первичный ключ,служит для однозначной идентификации строки;
UNIQUE — уникальный индекс, в отличии от PRIMARY, можетиспользовать значение NULL;
INDEX — индекс, который может использоваться в нескольких строках;
FULLTEXT — полнотекстовый индекс;
A_I (auto_increment) — автоматический счетчик для первичного ключа;
Комментарий — пояснения для строки.
Затем нажмите Сохранить.
Готово, вы добавили новую таблицу в базу данных phpMyAdmin
Как обновить данные в таблице phpMyAdmin
Выберите нужную базу данных.
Кликните по таблице, которую хотите изменить.
Выберите строку и нажмите Изменить:
Актуализируйте информацию и кликните Ок:
Готово, вы изменили данных в таблице через phpMyAdmin.
Как удалить базу данных phpMyAdmin
Нажмите на нужную базу данных.
Затем кликните по таблице, которую хотите удалить.
Перейдите на вкладку Операции:
В блоке «Удалить данные или таблицу» кликните по строке Удалить таблицу (DROP):
Чтобы подтвердить удаление, нажмите Ок.
Готово, вы удалили базу данных через phpMyAdmin.
Импорт базы данных через phpMyAdmin
Перейдите в Личный кабинет и нажмите в строке услуги хостинга кнопку «Управление услугой».
В блоке «Реквизиты доступа» указаны данные для подключения к базе данных MySQL, созданной по умолчанию :
С копируйте их, они пригодятся при подключении к phpMyAdmin. Также эта информация будет выслана в письме после заказа услуги хостинга.
Пролистайте страницу вверх и нажмите Войти в панель в блоке «Реквизиты доступа».
В панели управления кликните по разделу «phpMyAdmin»:
В открывшейся вкладке введите логин и пароль БД из «Реквизитов доступа» (или письма) и нажмите Вперёд:
Готово, вы импортировали базу данных через phpMyAdmin.