Краткий обзор каких-либо возможностней MySQL. Советы по оптимизации.
Статья станет может быть полезна как новеньким, но и экспертам. Первые получат сведения о главных способностях MySQL, в отсутствии чтения документации. А теснее имея представление о MySQL, можнож прибегнуть к надлежащим пособиям, для наиболее детализированного исследования заинтересовавшей полномочия. Для заключительных станет может быть полезно выяснить о каких-либо приемах проектирования баз этих и оптимизации.
Статья станет быть из пт, именуем их рецептами. Автор хотел отсортировать их, для наиболее комфортного чтения. Некоторые рецепты, всепригодны и подходят для всех СУБД. Вы сможете читать их во всяком порядке, пропуская то, что теснее превосходно представляете.
Для того чтоб ликвидировать не однозначную трактовку главных определений, на которые опирается вся доктрина реляционных баз этих, в конце заметки приведен не очень большой словарик.
1). Во всех версиях 3.хх не поддерживается ссылочная целостность и вложенные запросы(как данное обойти-рецепт 6). По первичному ключу MySQL автоматом делает индекс.
Для иных атрибутов возможно сделать доп индексы. Индекс создается сообща с таблицей -
CREATE TABLE [фамилия_таблицы] (... ,INDEX|KEY [фамилия_индекса] (аттрибут1,...))
причем казенные поля KEY и INDEX - синонимы. Начиная с версии 3.22 индекс возможно сделать и в отдельности -
CREATE INDEX [фамилия_индекса] ON [фамилия_таблицы] (аттрибут1,...).
Обычно доп индексы, делаются для ускорения процесса подборки из информационной базы. При его существе размер таблицы растет, потому ежели скоростные характеристики вас организуют, то индекс делать вовсе не обязательно. Если скорость неприемлима, индекс прибавляется для атрибутов предписанных в запросе опосля сборки WHERE.
(Пример:
SELECT uid,data,comments FROM test_table WHERE uid = 90 AND data = 'test';
CREATE INDEX ind1 ON test_table (data))
2). Если из подборки нужно было извлечь только немного строчек, то в сборки SELECT указывается LIMIT x,y.
x-смещение,
y-максимальное количество строчек
Параметр x-не обязателен.
При данном на выполнеие неполного запроса уходит менее времени.
(Пример:
SELECT * FROM table WHERE d > 900 LIMIT сто)
3). Иногда потребуется сберечь эффект подборки в файлике. Это делается так -
SELECT ... INTO OUTFILE '/path/to/dir/filename'.
Файл не должен существовать.
Обратная операция загрузки из файла в таблицу -
LOAD DATA INFILE '/path/to/dir/filename' INTO TABLE table. Строки файла обязаны иметь формат вида (поле1tполе2t.., где t - знак табуляции). Более трудоемкий формат команды в этой заметке рассматриваться не станет.
Последний вариант имеет возможность применяться и в случае увеличения скорости загрузки этих в таблицу. Предположим, ваша программа поочередно исполняет вставку грандиозного числа строчек в таблицу. Эта операция сможет занять пару минут, исходя из размера этих и численности индексов. С поддержкой ведь LOAD DATA творцу получилось увеличить скорость вставки в 7 разов!
4). При нередких операциях вставки, удаления и обновления этих таблицы(с типами - VARCHAR,BLOB,TEXT), встает дефрагментация. Для того, чтоб ее минимизировать присутствует операция OPTIMIZE TABLE [фамилия_таблицы].
5). Удобной вероятностью MySQL считается авто повышение ценности поля. Создание такового поля - CREATE TABLE .. pole int(7) AUTO_INCREMENT.. . Причем данное поле наверное заявлено, как изначальный ключ и значит в таблице оно наверное единственным.
