я следующие 2 одинаковые таблицы, используя MySQL:MySQL MyISAM Разница в поле Count между двумя одинаковыми таблицами
DROP TABLE IF EXISTS `DB`.`tblNew`;
CREATE TABLE `DB`.`tblNew` (
`NumberPK` int(10) unsigned NOT NULL,
`Count` int(10) unsigned NOT NULL,
PRIMARY KEY (`NumberPK`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
и
DROP TABLE IF EXISTS `DB`.`tblPrev`;
CREATE TABLE `DB`.`tblPrev` (
`NumberPK` int(10) unsigned NOT NULL,
`Count` int(10) unsigned NOT NULL,
PRIMARY KEY (`NumberPK`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Я хочу, чтобы получить разницу в «Count» поле между двумя таблицами, основанное на их присоединении к полю «NumberPK».
Я написал этот вопрос:
SELECT
gvNew.NumberPK
FROM
tblNew AS gvNew
LEFT OUTER JOIN
tblPrev AS gvPrev ON gvNew.NumberPK = gvPrev.NumberPK
ORDER BY gvNew.Count - IFNULL(gvPrev.Count, 0) DESC
LIMIT 10
для того, чтобы получить 10 «NumberPK» записи, где разница была наибольшей.
Проблема заключается в том, что MySql должен выполнить сканирование таблицы, чтобы получить разницу в Counts. Соединение очень эффективно, так как оно находится на первичном ключе и, хотя с примерно 50000 записями, результаты возвращаются почти мгновенно, мне интересно, будет ли сканирование (по таблицам с двумя 4-байтовыми полями в каждом) так же быстро, с таблицами между 1-4 миллионами строк.
Или, есть ли лучшие способы сделать это?
Спасибо заранее, Tim
Вам нужно учитывать, где разница отрицательная? –
Привет @ P.Salmon ... нет разницы никогда не может быть отрицательным ... это может быть 0, но не отрицательно. – user3480610