Mysql запрос на присоединение к 5 биржевым таблицам - PullRequest
0 голосов
/ 06 августа 2020

У меня 5 столов; долговое_обслуживание, дивидендный_уайль, рыночная_скапка, рыночные_данные и p_e_ratio. Я хочу к ним присоединиться, в каждой таблице есть столбец с символом компании. Я хочу сделать запрос и быстро присоединиться к этим 5 таблицам. Я пробовал

SELECT *, _pe.date as pe_date, _md.Close, _mc.price as market_cap_price, yield FROM `debt_equity` m
INNER join p_e_ratio _pe on _pe.company = m.company
INNER join market_data _md on _md.company = m.company
INNER join market_cap _mc on _mc.company = m.company
INNER join dividend_yield _y on _y.company = m.company 
where m.date >'2020-03-31' and m.date < '2020-06-31' 
and m.price < 1 and _pe.date >'2020-03-31' and _pe.date < '2020-06-31' and _pe.ratio < 30
and _md.Close >= 15 and _md.date_time >'2020-03-31' and _md.date_time < '2020-06-31'
and _mc.company = m.company and _mc.price > 2000 and _mc.date >'2020-03-31' and _mc.date < '2020-06-31'and  _mc.date <= m.date
and _y.yield > 8  and _y.date >'2020-03-31' and _y.date < '2020-06-31'
GROUP by m.company order by m.company asc

Но это слишком медленно

Мой обновленный sql запрос производительность улучшена, добавлена ​​дополнительная индексация

SELECT *, _pe.date as pe_date, _mc.price as market_cap_price, yield FROM `debt_equity` m
INNER join p_e_ratio _pe on _pe.company = m.company and (_pe.date >= DATE_sub(m.date, INTERVAL 10 day ) and _pe.date <= m.date)  and _pe.ratio < 30
INNER join market_cap _mc on _mc.company = m.company and (_mc.date >= DATE_sub(m.date, INTERVAL 30 day ) and _mc.date <= m.date) and _mc.price > 2000
INNER join dividend_yield _y on _y.company = m.company and (_y.date >= DATE_sub(m.date, INTERVAL 10 day ) and _y.date <= m.date) and _y.yield > 8

INNER join market_data _md on _md.company = m.company and (_md.date_time >= DATE_sub(m.date, INTERVAL 2 day ) and _md.date_time <= DATE_add(m.date, INTERVAL 2 day )) and  _md.Close >= 15
where m.date >'2020-03-31' and m.date < '2020-07-31' and m.price < 1
GROUP by m.company order by m.company ASC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...