История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Топ:
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Интересное:
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Дисциплины:
2017-07-01 | 260 |
5.00
из
|
Заказать работу |
|
|
Чтобы правильно использовать составные индексы, необходимо понять структуру их хранения. Все работает точно так же, как и для обычного индекса. Но для значений используются значений всех входящих колонок сразу. Для таблицы с такими данными:
id | name | age | gender 1 | Den | 29 | male2 | Alyona | 15 | female3 | Putin | 89 | tsar4 | Petro | 12 | maleзначения составного индекса будут такими:
age_gender 12male15female29male89tsarЭто означает, что очередность колонок в индексе будет играть большую роль. Обычно колонки, которые используются в условиях WHERE, следует ставить в начало индекса. Колонки из ORDER BY — в конец.
Поиск по диапазону
Представим, что наш запрос будет использовать не сравнение, а поиск по диапазону:
SELECT * FROM users WHERE age <= 29 AND gender = 'male'Тогда MySQL не сможет использовать полный индекс, т.к. значения gender будут отличаться для разных значений колонки age. В этом случае база данных попытается использовать часть индекса (только age), чтобы выполнить этот запрос:
age_gender12 male 15 female 29 male 89 tsarСначала будут отфильтрованы все данные, которые подходят под условие age <= 29. Затем, поиск по значению "male" будет произведен без использования индекса.
Сортировка
Составные индексы также можно использовать, если выполняется сортировка:
SELECT * FROM users WHERE gender = 'male' ORDER BY ageВ этом случае нам нужно будет создать индекс в другом порядке, т.к. сортировка (ORDER) происходит после фильтрации (WHERE):
CREATE INDEX gender_age ON users(gender, age);Такой порядок колонок в индексе позволит выполнить фильтрацию по первой части индекса, а затем отсортировать результат по второй.
Колонок в индексе может быть больше, если требуется:
SELECT * FROM users WHERE gender = 'male' AND country = 'UA' ORDER BY age, register_timeВ этом случае следует создать такой индекс:
|
Использование EXPLAIN для анализа индексов
Инструкция EXPLAIN покажет данные об использовании индексов для конкретного запроса. Например:
mysql> EXPLAIN SELECT * FROM users WHERE email = '[email protected]';+----+-------------+-------+------+---------------+------+---------+------+------+-------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+-------------+-------+------+---------------+------+---------+------+------+-------------+| 1 | SIMPLE | users | ALL | NULL | NULL | NULL | NULL | 336 | Using where |+----+-------------+-------+------+---------------+------+---------+------+------+-------------+Колонка key показывает используемый индекс. Колонка possible_keys показывает все индексы, которые могут быть использованы для этого запроса. Колонка rows показывает число записей, которые пришлось прочитать базе данных для выполнения этого запроса (в таблице всего 336 записей).
Как видим, в примере не используется ни один индекс. После создания индекса:
mysql> EXPLAIN SELECT * FROM users WHERE email = '[email protected]';+----+-------------+-------+-------+---------------+-------+---------+-------+------+-------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+-------------+-------+-------+---------------+-------+---------+-------+------+-------+| 1 | SIMPLE | users | const | email | email | 386 | const | 1 | |+----+-------------+-------+-------+---------------+-------+---------+-------+------+-------+Прочитана всего одна запись, т.к. был использован индекс.
Когда создавать индексы?
Администрирование сервера.
|
1. Резервное копирование и восстановление информации;
Сложно переоценить необходимость создания резервной копии. Для начала обычно составляется план резервного копирования, что копировать, куда, как.
Способы создания бекапа:
А) Полный бекап.
Используем утилиту командной строки mysqldump. Параметров этой утилиты очень, очень много.
Создание: mysqldump –uroot –proot shop > backup.sql
Восстановление: mysql –uroot –proot shop< backup.sql
(запускать из под админа, в командной строке заходим в папку, где установлен сервер, с помощью команды >cd путь, затем запускаем mysqldump.exe, далее уже команда)
Б) Бекап таблицы.
Создание: mysqldump –uroot –proot shop продажи> C:\Program Files\MySQL\MySQL Server 5.6\bin\backup
2. Разделение прав пользователей;
Есть две команды создать пользователя и удалить пользователя. У каждого пользователя есть Логин, хост(место подключения, машина, сетевой путь) и пароль. С разных машин можно дать разные права одному и тому же пользователю. Имя пользователя состоит из двух частей его логин @ хост, в качестве хоста может быть имя, сетевой адрес или айпишник. Если не требуется айпишник, то ставим %
Пример: create user ‘fedya’@’%’
Вход: mysql –u fedya
Но ему пока ничего не доступно.
Задать пароль: SET Password FOR ‘fedya’@’%’ = PASSWORD(‘root’);
Сам по себе сервер mysql хранит логины и пароли в отдельной БД mysql.user
Задать пароль можно простым обновлением записи в этой базе данных.
Можно создать пользователя и установить ему пароль сразу же:
create user ‘vasya’@’%’ IDENTIFIED BY ‘root’;
Для управления привилегиями пользователей используется команда:
GRANT операция_которую_можно_делать
ON Таблица
TO USER
Доступ можно дать к таблице, функции, вьюшке, к колонке.
Например,
GRANT SELECT
ON SHOP.*
TO ‘fedya’@’%’
Или
GRANT SELECT, INSERT
ON SHOP.*
TO ‘fedya’@’%’
Или на конкретную таблицу:
GRANT SELECT, INSERT
ON SHOP.Продажи
TO ‘fedya’@’%’
Забрать права:
REVOKE операция_которую_нужно_забрать
ON Таблица
FROM USER
Запрос тормоз:
SELECT COUNT(*) FROM CITI C1 WHERE EXISTS(SELECT * FROM CITY C2 WHERE C1.NAME = C2.NAME)
Запрос создание таблицы на др движке
CREATE TABLE CITY1 ENGINE=MYISAM SELECT * FROM WORLD.CITY;
CREATE TABLE CITY2 ENGINE=INNODB SELECT * FROM WORLD.CITY;
|
|
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!