powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Долгий JOIN
13 сообщений из 13, страница 1 из 1
Долгий JOIN
    #38393465
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
SELECT DISTINCT(uli.user_id), di.debrid_id
FROM fh_user_login_ip uli
INNER JOIN fh_debrid_ip di
  ON di.ip = uli.ip



Код: plaintext
Запрос открыт за 159,598c [159,596c выполнение, 0,002c выборка]

Можно что-то сделать?
...
Рейтинг: 0 / 0
Долгий JOIN
    #38393483
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettDISTINCT(uli.user_id), di.debrid_idВы уверены, что запрос работает именно так, как вы себе это представляете?
...
Рейтинг: 0 / 0
Долгий JOIN
    #38393485
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и, как всегда, нужен DDL таблицы и индексов.
...
Рейтинг: 0 / 0
Долгий JOIN
    #38393533
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftHettDISTINCT(uli.user_id), di.debrid_idВы уверены, что запрос работает именно так, как вы себе это представляете?

Да тот, скобки тут можно опустить. Наверное даже нужно убрать, чтобы сомнения не вызывало.
...
Рейтинг: 0 / 0
Долгий JOIN
    #38393539
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE TABLE fh_debrid_ip (
  id int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  debrid_id int(10) UNSIGNED NOT NULL,
  ip int(10) UNSIGNED NOT NULL,
  PRIMARY KEY (id),
  UNIQUE INDEX UX_debrid_debrid_ip (debrid_id, ip),
  CONSTRAINT FK_debrid_ip FOREIGN KEY (debrid_id)
  REFERENCES fh_debrid (id) ON DELETE RESTRICT ON UPDATE RESTRICT
)
ENGINE = INNODB
AUTO_INCREMENT = 18059
AVG_ROW_LENGTH = 77
CHARACTER SET utf8
COLLATE utf8_general_ci;




Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE TABLE fh_user_login_ip (
  id int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  user_id int(10) UNSIGNED NOT NULL,
  ip int(10) UNSIGNED NOT NULL,
  date timestamp DEFAULT CURRENT_TIMESTAMP,
  pc_id char(13) DEFAULT NULL,
  country_id int(10) UNSIGNED DEFAULT NULL,
  PRIMARY KEY (id),
  INDEX IX_user_login_user_ip (user_id, ip),
  CONSTRAINT FK_last_login_ip FOREIGN KEY (user_id)
  REFERENCES fh_user (id) ON DELETE CASCADE ON UPDATE RESTRICT,
  CONSTRAINT FK_user_login_ip_country FOREIGN KEY (country_id)
  REFERENCES fh_country (id) ON DELETE CASCADE ON UPDATE RESTRICT
)
ENGINE = INNODB
AUTO_INCREMENT = 375674
AVG_ROW_LENGTH = 46
CHARACTER SET utf8
COLLATE utf8_general_ci;
...
Рейтинг: 0 / 0
Долгий JOIN
    #38393550
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

Как-то странно. Возможных ключей нет, а типа используются... а ежели посмотреть DDL, то внезапно оказывается что оба ключа - составные и поисковое значение - далеко не первое... это точно про Мускуль? Какая версия ТАК умеет?

... а ежели посмотреть на последние значения счетчиков, то похоже на то, что идет полный скан таблиц "по факту"... непонятно как-то.
...
Рейтинг: 0 / 0
Долгий JOIN
    #38393558
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109Hett,

Как-то странно. Возможных ключей нет, а типа используются... а ежели посмотреть DDL, то внезапно оказывается что оба ключа - составные и поисковое значение - далеко не первое... это точно про Мускуль? Какая версия ТАК умеет?

... а ежели посмотреть на последние значения счетчиков, то похоже на то, что идет полный скан таблиц "по факту"... непонятно как-то.Индексы используются просто как покрывающие индексы, ничего странного.
...
Рейтинг: 0 / 0
Долгий JOIN
    #38393564
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

разве что... ну тогда рецепт типовой: создать нормальные для запросу индексы по полю ip.
...
Рейтинг: 0 / 0
Долгий JOIN
    #38393568
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109ну тогда рецепт типовой: создать нормальные для запросу индексы по полю ip.Я бы предложил создать два индекса, аналогичные тем, что используются в плане, но с обратным порядком полей. Затем сделать ANALYZE TABLEb и посмотреть план снова.
...
Рейтинг: 0 / 0
Долгий JOIN
    #38393572
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Балин, я добавил индексы в другой одну бд, а тестил в другую, при этом увидел что в эксплайне индексы присутствуют, а какие именно не уточнил. В общем все работает нормально с индексами по айпи.

А что за покрывающие индексы?
...
Рейтинг: 0 / 0
Долгий JOIN
    #38393574
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettА что за покрывающие индексы?Это когда в индексе есть все поля, необходимые для выполнения запроса. Тогда MySQL читает только индекс, а в таблицу вообще не лазит.
...
Рейтинг: 0 / 0
Долгий JOIN
    #38393583
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, понял, спс.
Using where - это я как понимаю говорит о скане?
...
Рейтинг: 0 / 0
Долгий JOIN
    #38393644
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

мне о скане больше говорит колонка rows... совпадающая по количеству с объемом таблиц... просто тут скан индекса, а не самой таблицы. :)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Долгий JOIN
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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