Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Привет! Есть таблица в базе MySQL - 800 млн. записей.
Необходимо, чтобы запросы Select,Update,Insert выполнялись (максимум несколько секунд), сейчас каждый занимает несколько минут.
Запросы:
Select ID,data From tbl_data Where status=0 AND checked=0 Limit 0,1000
Update tbl_data Set status=2,date_handled='$curr_date_time' Where ID IN($IdList)
Update tbl_data Set status=0 Where status=2 AND HOUR(TIMEDIFF('$curr_date_time', date_handled)) >= 25
Insert Into tbl_data Set data='$data'
CREATE TABLE `tbl_data` (
`ID` int(10) unsigned NOT NULL auto_increment,
`data` varchar(250) NOT NULL,
`checked` tinyint(1) NOT NULL default '0',
`status` int(11) NOT NULL default '0',
`date_handled` datetime NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `ID` (`ID`),
KEY `combined` (`checked`,`status`),
FULLTEXT KEY `domain_fulltext_index` (`data`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Неактивен
Как выглядит EXPLAIN для первого запроса?
Неактивен
Ещё нужно удалить UNIQUE KEY `ID` (`ID`),
сейчас у вас 2 одинаковых ключа на колонке id (один первичный, второй уникальный), а чем больше ключей, тем медленней операции insert, update, delete.
Неактивен
третий запрос нужно переписать как
Неактивен
Страниц: 1