У меня простой запрос:
SELECT
definitions.rowid,
chars,
ROW_NUMBER() OVER (ORDER BY chars, definitions.rowid) AS nr
FROM definitions
INNER JOIN words ON definitions.word = words.rowid
WHERE definitions.valid = True
HAVING chars > 20
на моем компьютере (intel) он возвращает 36k записей
, но на клиентском компьютере (ryzen 2990wx) он возвращает 99k записей (не работает -chars начинается с формы 1)
если я удаляю объединение, оно работает нормально на обоих компьютерах
если я удаляю row_number, оно также работает нормально на обоих компьютерах
, если я заменяю «имеющий»с "и" тоже работает нормально на обоих компьютерах
на обоих компьютерах одинаковые версии mysql (8.018) и одинаковые таблицы ...
У меня завтра презентация - мне нужнолюбые идеи
CREATE TABLE `definitions` (
`rowid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`word` INT(10) UNSIGNED NULL DEFAULT NULL,
`definition` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_polish_ci',
`chars` TINYINT(3) UNSIGNED NULL DEFAULT NULL,
`difficult` TINYINT(3) UNSIGNED NULL DEFAULT '99',
`islocked` BIT(1) NULL DEFAULT b'0',
`valid` BIT(1) NULL DEFAULT b'0',
PRIMARY KEY (`rowid`),
INDEX `word` (`word`)
)
COLLATE='utf8_polish_ci'
ENGINE=InnoDB
AUTO_INCREMENT=100038
;
CREATE TABLE `words` (
`rowid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`word` VARCHAR(64) NULL DEFAULT NULL COLLATE 'utf8_polish_ci',
`display` VARCHAR(64) NULL DEFAULT NULL COLLATE 'utf8_polish_ci',
`difficult` TINYINT(4) UNSIGNED NULL DEFAULT NULL,
`islocked` BIT(1) NULL DEFAULT NULL,
`valid` BIT(1) NULL DEFAULT NULL,
PRIMARY KEY (`rowid`),
INDEX `word` (`word`),
INDEX `display` (`display`)
)
COLLATE='utf8_polish_ci'
ENGINE=InnoDB
AUTO_INCREMENT=57009
;
код создания одинаков на обоих компьютерах - создается одним и тем же установщиком ... запрос является частью браузера / редактора таблиц с своевременной загрузкой (просмотр данных в виртуальном режиме), поэтомуочень сложно изменить свою логику ночью