Можете ли вы помочь мне с индексацией моих таблиц?
Проблема в том, что я проиндексировал свои таблицы, но у меня все еще есть «полное сканирование таблицы» в моем объяснении.
это мой (рабочий) запрос, но на больших таблицах он может быть медленным, и я не знаю, как это изменить
EXPLAIN select * from stats_clicked s
join visitor v on s.visitor_id=v.id
пс. index3 - я не хочу много раз значения (1,5), когда посетитель = 1 обновить страницу с идентификатором = 5
CREATE TABLE `visitor` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`visited_time` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
CREATE TABLE `stats_clicked` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`visitor_id` int(11) NOT NULL,
`page_clicked_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `index3` (`visitor_id`,`page_clicked_id`),
KEY `index1` (`visitor_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
insert into visitor (`visited_time`) values
(1467122944),(1467122944),(1467122944),
(1467122944),(1467122944),(1467122944),
(1467122944),(1467122944),(1467122944),
(1467122944),(1467122944),(1467122944),
(1467122944),(1467122944),(1467122944);
insert into `stats_clicked` ( `visitor_id`,`page_clicked_id`) values
(1,47),(2,24),(3,83),(3,8),(3,85),(3,88),(4,57),
(5,2),(6,1),(7,28),(8,83),(9,11),(9,16),(9,1),(10,17),
(11,70),(12,73),(13,97),(14,57),(15,30),(15,2),(15,22);
stats_clicked
, если вы хотите, чтобы(visitor_id, page_clicked_id)
была уникальной и не принимала visitor_id = 1 и page_clicked_id =5 несколько раз. - person Fredster   schedule 29.06.2016FOREIGN KEY
наvisitor_id
в таблицеstats_clicked
, чтобы сделать этот столбец уникальным и сделатьjoin
быстрее, поскольку это единственное условие, которое вы используете вjoin
. - person Fredster   schedule 29.06.2016