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

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

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



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

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




Есть таблица (проверка online пользователя): id | id пользователя | время последнего посещения

Я так понимаю, что для колонки - id пользователя, лучше сделать UNIQUE?

А для последней колонки индекса вообще не делать? (В том смысле, что запрос на обе колонки идёт; типа `id пользователя` AND `время` > NOW() - INTERVAL 5 MINUTE)

Смысла делать индекс на обе колонки нет? А для второй колонки (id пользователя) сделать UNIQUE?

Вроде понятно объяснил smile.gif


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

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



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

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5549
Пользователь №: 35718
На форуме: 4 года, 1 месяц, 29 дней
Карма: 170




нет


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

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



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

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




Медведь, индексы должны быть на все колонки, которые используются в условии. И не просто "индексы на каждую колонку", а именно сложный индекс на все те колонки, что есть в условии.
Если ты сделаешь 2 индекса, на 2 и 3 колонки по отдельности, то будет использоваться только один из них.


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

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

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

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

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



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

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




sergeiss

Это понятно, я конкретно про этот пример. Зачем лишний раз нагружать DB, если id пользователя по сути уникальный и будет найдена только одна строка.

Кроме того, если сделать индекс и на время, то обновление этой колонки будет медленнее.


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

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



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

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




Цитата (Медведь @ 6.03.2016 - 13:28)
Зачем лишний раз нагружать DB, если id пользователя по сути уникальный и будет найдена только одна строка

Ну так ты же сам указал условие на время smile.gif
Цитата (Медведь @ 6.03.2016 - 09:17)
запрос на обе колонки идёт; типа `id пользователя` AND `время` > NOW() - INTERVAL 5 MINUTE)

Ты или условие на время убирай, или добавляй его в индекс.


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

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

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

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

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



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

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




Я правильно понимаю, что при создании индекса, создаётся новая таблица?


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

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



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

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




Цитата (Медведь @ 6.03.2016 - 13:52)
Я правильно понимаю, что при создании индекса, создаётся новая таблица?

Нет

http://www.mysql.ru/docs/man/MySQL_indexes.html почитай вот... Это первая строка, которую выдал гугл.


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

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

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

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

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



Пофигист
******

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




Цитата (Медведь @ 6.03.2016 - 09:17)
Смысла делать индекс на обе колонки нет??

Смысл в скорости выборки.
Нужна максимальная скорость выборки - делать. Не нужна - не делать.
Для макс.скорости для указанного условия д.б. index (id пользователя, время последнего посещения)


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

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



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

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




Понятно.

А я думал, что по сути id пользователя уникально в этой колонке, и если сделать один индекс, только на эту колонку, то работать будет быстрее, чем создание индекса на постоянно обновляемую колонку, а это значит, что и индексы обновляются.


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

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



Пофигист
******

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




Если записи действительно уникальны по "id пользователя" , то "id" не нужен.
В т.ч. для указанного условия достаточно индекса только по "id пользователя".


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

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



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

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




Индексы должны идти с лева на право, как они у тебя расположенный в запросе


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

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



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

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5549
Пользователь №: 35718
На форуме: 4 года, 1 месяц, 29 дней
Карма: 170




Медведь, купи книгу и читай, а не
Цитата (Медведь @ 6.03.2016 - 15:11)
А я думал, что по сути id пользователя уникально в этой колонке, и если сделать один индекс, только на эту колонку, то работать будет быстрее, чем создание индекса на постоянно обновляемую колонку, а это значит, что и индексы обновляются.



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

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



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

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




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

Это знаю ))
Меня интересовало это:

INDEX - служит для ускорения выборки по неуникальным полям, если это поле часто встречается в WHERE запросов. Надо только иметь ввиду, что если в колонке много одинаковых значений (т.н. низкая селективность индеска), то такой индекс м.б. неэффективен. Кроме того, создавая индексы, надо соблюдать некую золотую середину, поскольку наличие индекса ускоряет SELECT, но замедляет DML-операции (insert, update, delete), т.к. при изменении данных в таблице надо корректировать и индексы.

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

В общем S.Chushkin, индекс только на id пользователя делать. Совсем запутался ))


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

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



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 1
Пользователь №: 42620
На форуме: 10 месяцев, 12 дней
Карма:




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

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



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

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




Цитата (Valick @ 6.03.2016 - 16:40)
Медведь, купи книгу и читай, а не

по mysql что посоветуете, только понятным языком чтобы было.


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

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

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