У меня есть этот запрос, который работает довольно хорошо, но становится очень медленным, так как записи увеличиваются в БД. Может кто-нибудь помочь оптимизировать его?
SELECT t1.*
FROM tbl1 t1
LEFT JOIN tbl2 t2 on t1.id = t2.tbl1_id AND t2.my_id ='5'
WHERE t2.tbl1_id IS NULL AND
t1.userid !='5' AND
t1.base <= 95 AND
t1.aloc > 0 AND
t1.cred > 0 AND
t1.pause < 1 AND
t1.admin_se < 1
ORDER by t1.cred+0 DESC
limit 20");
код для создания таблицы 1
CREATE TABLE `tbl1` (
`id` int(30) NOT NULL AUTO_INCREMENT,
`msg` tinytext COLLATE utf8_unicode_ci,
`userid` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL,
`_date` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL,
`base` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL,
`cred` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL,
`aloc` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL,
`_expire` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL,
`expire_date` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL,
`_count` int(30) NOT NULL DEFAULT '0',
`pause` int(1) NOT NULL DEFAULT '0',
`src_` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL,
`original_url` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`short_url` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`short_url_code` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`scheduler` int(1) NOT NULL DEFAULT '0',
`admin_se` int(1) NOT NULL DEFAULT '0',
`autoloadval` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
`lng` int(30) NOT NULL DEFAULT '1',
`rinterval` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
`rcat` int(10) NOT NULL DEFAULT '5',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=11151 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
Код для создания tbl2
CREATE TABLE `tbl2` (
`tbl2id` int(30) NOT NULL AUTO_INCREMENT,
`my_id` int(30) DEFAULT NULL,
`tbl1_msg_id` int(30) DEFAULT NULL,
`_date` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL,
`_type` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
`fol` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
`pr_id` int(30) DEFAULT NULL,
`msg_id` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`tracking_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
`val_optimizer` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`tbl2id`)
) ENGINE=MyISAM AUTO_INCREMENT=147014 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
Пожалуйста, примите во внимание, что я новичок в MySQL. Я не понимаю большинство технических терминов.
Я просто хочу, чтобы этот скрипт работал быстро. спасибо
Почему я сделал "заказ по t1.cred + 0" У меня есть значения в поле кредита от 0 до 9999. Я хочу перечислить из самых больших, но что интересно, 5 указано до 10. Не знаю, как поступить с этим