Size: a a a

2020 November 30

IZ

Ilia Zviagin in MySQL
Бородатый Таракан
Сделал через union distinct
Сервер сам такие штуки делает легко, переписывать не нужно
источник

БТ

Бородатый Таракан... in MySQL
Ilia Zviagin
и сделать индексы (key, date, fieldOne) и (key, date, fieldTwo),
Сделай. Будет быстрее. Запрос переписывать не надо.

Индексы , возможно, лучше (date, fieldOne) и (date, fieldTwo)

то это по сути будет быстрее OR?

Не будет быстрее.
индексы не юзает
источник

IZ

Ilia Zviagin in MySQL
Бородатый Таракан
индексы не юзает
Ну надо план смотреть и селективность
источник

IZ

Ilia Zviagin in MySQL
Бородатый Таракан
индексы не юзает
Твои индексы или мои? У тебя неверные.
источник

БТ

Бородатый Таракан... in MySQL
Ilia Zviagin
Твои индексы или мои? У тебя неверные.
Твои
Они уже есть в системе
источник

БТ

Бородатый Таракан... in MySQL
И мускуль упорно их игнорирует
источник

IZ

Ilia Zviagin in MySQL
Бородатый Таракан
Твои
Они уже есть в системе
Тогда надо смотреть, что там.
источник

IZ

Ilia Zviagin in MySQL
Бородатый Таракан
Твои
Они уже есть в системе
Ой, сори, я не так запрос понял. Всё отменяется
источник

БТ

Бородатый Таракан... in MySQL
🙂
источник

IZ

Ilia Zviagin in MySQL
Бородатый Таракан
Вопрос есть запрос
select
   distinct p.(50 полей)
from p, pci
where p.key = pci.key
 and p.date = pci.date
 and ( p.fieldOne = ? or p.fieldTwo = ?);


Правильно ли понимаю что если переписать OR на UNION DISTINCT и сделать индексы (key, date, fieldOne) и (key, date, fieldTwo), то это по сути будет быстрее OR?
вот нафига non-ANSI join делать?

select
   p.*
from p
join pci on p.key = pci.key  and p.date = pci.date
where p.fieldOne = ? or p.fieldTwo = ?


Итого , индексы надо на (fieldOne) и (fieldTwo)

Сколько записей в таблице и сколько записей на одно значение каждого поля?
источник

S

Syntax Highlight Bot in MySQL
Ilia Zviagin
вот нафига non-ANSI join делать?

select
   p.*
from p
join pci on p.key = pci.key  and p.date = pci.date
where p.fieldOne = ? or p.fieldTwo = ?


Итого , индексы надо на (fieldOne) и (fieldTwo)

Сколько записей в таблице и сколько записей на одно значение каждого поля?
источник

БТ

Бородатый Таракан... in MySQL
Ilia Zviagin
вот нафига non-ANSI join делать?

select
   p.*
from p
join pci on p.key = pci.key  and p.date = pci.date
where p.fieldOne = ? or p.fieldTwo = ?


Итого , индексы надо на (fieldOne) и (fieldTwo)

Сколько записей в таблице и сколько записей на одно значение каждого поля?
в таблице p около 2 лямов
источник

БТ

Бородатый Таракан... in MySQL
в pci чуть меньше
источник

IZ

Ilia Zviagin in MySQL
Бородатый Таракан
в pci чуть меньше
pci пока не интересно
источник

БТ

Бородатый Таракан... in MySQL
key они все уникальные
источник

БТ

Бородатый Таракан... in MySQL
сейчас попробую ваш запрос сделать 🙂
источник

IZ

Ilia Zviagin in MySQL
Бородатый Таракан
key они все уникальные
А почему тогда у тебя JION по двум полям?
источник

БТ

Бородатый Таракан... in MySQL
и посмотреть что по explain-у
источник

IZ

Ilia Zviagin in MySQL
Бородатый Таракан
и посмотреть что по explain-у
не, стой
источник

БТ

Бородатый Таракан... in MySQL
стою
источник