Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / правильный подход к индексам / 16 сообщений из 16, страница 1 из 1
04.09.2013, 09:45:47
    #38386162
buyboy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
правильный подход к индексам
всем привет

как-то не слишком углублялся в теоретическое обоснование использования индексов, но время пришло...

насколько правильна следующая мысль = вывод о создании тех или иных индексов зависит от потенциально ожидаемых запросов в конкретной таблице

типа ход мыслей такой: в данной таблице В ОСНОВНОМ я буду искать так-то и так-то, поэтому создам индексы на такие-то поля

p.s. ну и в продолжение: снабдить таблицу индексами на все случаи жизни явно не получится?

народ, помогите с разжевыванием
...
Рейтинг: 0 / 0
04.09.2013, 09:50:25
    #38386173
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
правильный подход к индексам
В целом все правильно.
Еще (помимо ускорения выборки) индекс создаются (иногда неявно) для обеспечения работы ключей и констрейнтов - для первичных, уникальных и внешних ключей.

Кстати, бывает, что удается снабдить таблицу индексами на все случаи жизни :)
Например, когда полей в этой таблице всего два.
...
Рейтинг: 0 / 0
04.09.2013, 10:00:36
    #38386183
buyboy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
правильный подход к индексам
miksoftЕще (помимо ускорения выборки) индекс создаются (иногда неявно) для обеспечения работы ключей и констрейнтов - для первичных, уникальных и внешних ключей. оооо! констрейнты - это совершенно не знакомо

miksoftКстати, бывает, что удается снабдить таблицу индексами на все случаи жизни :) Например, когда полей в этой таблице всего два. такое разве бывает?

такой вот вопрос: есть таблица в которой лежат статьи, размер статьи обычно около 2500 знаков, тип поля - longtext, записей совсем мало - 140
насколько облегчит/усложнит создание по этому полю FULLTEXT KEY ?
я уже попробовал и протестировал - скорость поиска по запросу
Код: plsql
1.
SELECT * FROM `news_1` WHERE `content` LIKE '%колба%'


снизилась с 0.0103 sec до 0.0020 sec - в 5 раз
...
Рейтинг: 0 / 0
04.09.2013, 10:04:01
    #38386185
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
правильный подход к индексам
поиск по фултексту производится с помощью оператора match ... against ..., а не like.
...
Рейтинг: 0 / 0
04.09.2013, 10:06:22
    #38386189
buyboy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
правильный подход к индексам
tanglirпоиск по фултексту производится с помощью оператора match ... against ..., а не like.абсолютно согласен
но мне важно было понять разницу во времени поиска - поэтому неоптимальный подход только подчеркнул результаты
...
Рейтинг: 0 / 0
04.09.2013, 10:08:02
    #38386190
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
правильный подход к индексам
buyboymiksoftКстати, бывает, что удается снабдить таблицу индексами на все случаи жизни :) Например, когда полей в этой таблице всего два. такое разве бывает?"такое" - это таблица из двух полей?
Бывает. В моем случае это была таблица-связка для отношения многие-ко-многим. Там было два индекса - для первичного ключа из обоих полей и просто индекс из тех же двух полей в обратном порядке.
...
Рейтинг: 0 / 0
04.09.2013, 10:11:14
    #38386193
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
правильный подход к индексам
buyboyподчеркнул результатыВы уверены, что не нарвались на какое-нибудь кэширование?
...
Рейтинг: 0 / 0
04.09.2013, 10:11:17
    #38386194
buyboy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
правильный подход к индексам
параллельно читаю статью и там есть такая вот мысль = MySQL сам построит индексы по полю, если при объявлении структуры таблицы мы зададим полю уникальность UNIQUE, говорящую о том, что данное поле не может хранить два одинаковых значения

это так? и в чем кардинальное отличие индекса UNIQUE от FULLTEXT ?
по-идее ведь содержание статьи всегда уникально как последовательность символов
...
Рейтинг: 0 / 0
04.09.2013, 10:12:43
    #38386197
buyboy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
правильный подход к индексам
miksoftbuyboyподчеркнул результатыВы уверены, что не нарвались на какое-нибудь кэширование?ммммм...
не думал на эту тему...
просто создал в денвере на локалхосте две идентичные таблицы: одна с фуллтекст индексом, вторая - без него
...
Рейтинг: 0 / 0
04.09.2013, 10:16:28
    #38386199
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
правильный подход к индексам
buyboyчитаю статьюЧитайте лучше документацию:
Optimization and Indexes .
CREATE INDEX Syntax
CREATE INDEX SyntaxA UNIQUE index creates a constraint such that all values in the index must be distinct. An error occurs if you try to add a new row with a key value that matches an existing row. For all engines, a UNIQUE index permits multiple NULL values for columns that can contain NULL. If you specify a prefix value for a column in a UNIQUE index, the column values must be unique within the prefix.

FULLTEXT indexes are supported only for MyISAM tables and can include only CHAR, VARCHAR, and TEXT columns. Indexing always happens over the entire column; column prefix indexing is not supported and any prefix length is ignored if specified. See Section 12.9, “Full-Text Search Functions”, for details of operation.
...
Рейтинг: 0 / 0
04.09.2013, 10:29:10
    #38386212
buyboy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
правильный подход к индексам
tanglirпоиск по фултексту производится с помощью оператора match ... against ..., а не like.
поиск с помощью запроса
Код: plsql
1.
SELECT * FROM `news_3` WHERE MATCH (`content`) AGAINST (' колба*' IN BOOLEAN MODE)

дал еще лучший результат = 0.0015 sec
...
Рейтинг: 0 / 0
04.09.2013, 10:45:54
    #38386231
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
правильный подход к индексам
buyboy,

ну так ясное дело, ведь в нём фултекст индекс использовался, в отличие от предыдущего
...
Рейтинг: 0 / 0
04.09.2013, 11:18:59
    #38386288
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
правильный подход к индексам
насколько правильна следующая мысль = вывод о создании тех или иных индексов зависит от потенциально ожидаемых запросов в конкретной таблице


Мысль правильна.


p.s. ну и в продолжение: снабдить таблицу индексами на все случаи жизни явно не получится?


Тоже правильно. Но учти, что все случаи штатного использования бд пользователями должны быть покрыты индексами, если это надо.
...
Рейтинг: 0 / 0
04.09.2013, 12:49:42
    #38386492
buyboy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
правильный подход к индексам
MasterZivНо учти, что все случаи штатного использования бд пользователями должны быть покрыты индексами, если это надо. получается что если создать 4-5 индексов удовлетворяющих потребности всех возможных вариантов запросов, то это нормально?
типа: принять во внимание крайний слева префикс, полнотекстовый поиск, поиск по ключу с ограничением количества символов, уникальные индексы и т.д.
так?
...
Рейтинг: 0 / 0
04.09.2013, 12:53:21
    #38386500
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
правильный подход к индексам
buyboy, да. Кто-то считает, что нет?
...
Рейтинг: 0 / 0
04.09.2013, 12:57:32
    #38386509
buyboy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
правильный подход к индексам
tanglirbuyboy, да. Кто-то считает, что нет?ну видимо я считал до текущей секунды :)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / правильный подход к индексам / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]