Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (3) 1 [2] 3  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Индексы sql
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5493
Пользователь №: 35718
На форуме: 4 года, 19 дней
Карма: 167






--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14978
Пользователь №: 4190
На форуме: 8 лет, 10 месяцев, 3 дня
Карма: 444




Цитата (Zzepish @ 6.03.2016 - 16:35)
Индексы должны идти с лева на право, как они у тебя расположенный в запросе

Не учи плохому, учи хорошему! А плохо само получится...

Не важно совершенно, в каком порядке у тебя в запросе стоят условия. Важно наличие полей В ЗАПРОСЕ, а не их порядок. А вот порядок полей В ИНДЕКСЕ как раз важен. Если сделаешь "индекс1 (колонка1, колонка2)" или "индекс2 (колонка2, колонка1)", то очень легко можно получить очень разные скорости выборки (в зависимости от ряда условий).


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Zzepish  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Аццкая хрень
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5475
Пользователь №: 32538
На форуме: 4 года, 6 месяцев, 13 дней
Карма: 49




sergeiss
а индекы не формируются в итоге в таком стиле:
namelast_nameage
ArtenZzepish23

?


--------------------
Правда тоже ложь, но с иным углом.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14978
Пользователь №: 4190
На форуме: 8 лет, 10 месяцев, 3 дня
Карма: 444




Zzepish, не понял твой вопрос.


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Zzepish  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Аццкая хрень
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5475
Пользователь №: 32538
На форуме: 4 года, 6 месяцев, 13 дней
Карма: 49




sergeiss
Я про составной индекс. Если я правильно помню: они сливаются в одну строку в последовательности их назначения


--------------------
Правда тоже ложь, но с иным углом.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Медведь  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 2482
Пользователь №: 37963
На форуме: 3 года, 3 месяца, 28 дней
Карма: 27




Ещё один вопросик. Я так понял, что если сделать индекс одновременно на 3 колонки, то в запросе только на первую из них индекс также сработает?


--------------------

Заходил 29.09.2016
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14978
Пользователь №: 4190
На форуме: 8 лет, 10 месяцев, 3 дня
Карма: 444




Цитата (Zzepish @ 7.03.2016 - 01:56)
Я про составной индекс. Если я правильно помню: они сливаются в одну строку в последовательности их назначения

Нет, никуда они не сливаются. Почитай, что такое "бинарное дерево". Например тут http://www.k-press.ru/cs/2000/3/trees/trees.asp очень неплохо описано.

Если кратко, на верхнем уровне дерева находятся те данные, которые соответствуют первому полю индекса. На втором уровне - данные из второго поля. И так далее.

Цитата (Медведь @ 7.03.2016 - 06:31)
Я так понял, что если сделать индекс одновременно на 3 колонки, то в запросе только на первую из них индекс также сработает?

Да, так smile.gif И только на первую. И на первую-вторую, и на первую-вторую-третью... А вот на первую-третью не получится sad.gif Если почитаешь по ссылке, что я дал на несколько строк выше в этом ответе, то поймешь. Ну или сам погугли по словам "индекс бинарное дерево".


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Zzepish  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Аццкая хрень
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5475
Пользователь №: 32538
На форуме: 4 года, 6 месяцев, 13 дней
Карма: 49




sergeiss
Я знаю про бинарное дерево. Я не знал про то, что таким образом построенна система индексов)


--------------------
Правда тоже ложь, но с иным углом.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Zzepish  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Аццкая хрень
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5475
Пользователь №: 32538
На форуме: 4 года, 6 месяцев, 13 дней
Карма: 49




sergeiss
Вот тут прочел

Устройство составного индекса - вот это смотри


--------------------
Правда тоже ложь, но с иным углом.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14978
Пользователь №: 4190
На форуме: 8 лет, 10 месяцев, 3 дня
Карма: 444




Цитата (Zzepish @ 7.03.2016 - 11:47)
Вот тут прочел

Бред какой-то там написан про составные индексы... Для "понимания в целом", может быть, и имеет смысл так объяснить. Но автор той "статьи", похоже, никогда не слышал о цифровых деревьях. И не понимает, как они используются при работе индексов.


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Zzepish  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Аццкая хрень
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5475
Пользователь №: 32538
На форуме: 4 года, 6 месяцев, 13 дней
Карма: 49




sergeiss
Уточнил у нашего куратора - таки деревья)


--------------------
Правда тоже ложь, но с иным углом.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
GET  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3846
Пользователь №: 21196
На форуме: 6 лет, 9 месяцев, 6 дней
Карма: 87




Медведь

Дело в том, что когда ты делаешь выборку
 SELECT * FROM `tabel` WHERE `id`=1 AND `time`>345345435
она идет слева направо, как ты понимаешь. И если у тебя индекс составной по полям [id+time], то MySQL заканчивает выборку сразу же на уровне таблицы индекса, не включая механизм перебора WHERE для основной таблицы.

Вариант когда индекс простой, т.е. только по [id] предполагает, что сначала поработаем с индексной таблицей, а затем перейдем к условию WHERE в основной таблице, даже если там одна строка, mysql как бы этого еще не знает выполняя условие
`id`=1

но ты правильно заметил, делая постоянный UPDATE для `time` с составным индексом придется еще и каждый раз делать внутренний UPDATE для индексной таблицы.

Я не уверен что это правильно и скорее склоняюсь к варианту с простым идексом по id.

И почему "ЗУБРЫ" форума с этим не согласны, не совсем понимаю.

Очень хотелось бы услышать комментарии.


--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14978
Пользователь №: 4190
На форуме: 8 лет, 10 месяцев, 3 дня
Карма: 444




Цитата (GET @ 8.03.2016 - 09:10)
но ты правильно заметил, делая постоянный UPDATE для `time` с составным индексом придется еще и каждый раз делать внутренний UPDATE для индексной таблицы.

Так рассуждать, так лучше вообще индексы не использовать smile.gif Ведь на их обновление всегда тратится время.

Цитата (GET @ 8.03.2016 - 09:10)

Я не уверен что это правильно и скорее склоняюсь к варианту с простым идексом по id.

В данном случае, может быть, так и правильнее будет. Потому что если индекс пользователя уникальный, то тогда условие на время вообще бессмысленно. Выбираешь ту единственную запись и смотришь, какое у неё время. В этом случае, кстати, может быть нужно просто пересмотреть структуру БД?

Но тут еще дело в том, что в теме речь идет об индексах в целом, о том, как их лучше составлять и как они вообще работают.


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
GET  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3846
Пользователь №: 21196
На форуме: 6 лет, 9 месяцев, 6 дней
Карма: 87




Цитата
Так рассуждать, так лучше вообще индексы не использовать  Ведь на их обновление всегда тратится время.

я именно из-за этого и имел ввиду:
Цитата
Потому что если индекс пользователя уникальный



--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чеширский кот
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 5911
Пользователь №: 1
На форуме: 10 лет, 10 месяцев, 2 дня
Карма: 125

Не пью :
22 года, 3 месяца, 2 дня


Живой пример эффективности составного индекса.
Есть таблица перехода по ссылкам. 3 поля: айдишник по инкременту, домен, время.
На сегодняшний день число переходов приближается к миллиону.
Запрос на число переходов по доменам:
SELECT domen, COUNT(id) AS cid FROM table GROUP BY domen ORDER BY cid DESC
При двух простых индексах (по айдишнику и по домену) время выполнения запроса 17-18 секунд. При составном индексе меньше 0.5 секунды.


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (3) 1 [2] 3  Ответ в темуСоздание новой темыСоздание опроса