修复未编制索引的数据库MySQL

时间:2015-10-16 09:33:58

标签: php mysql database indexing

编辑:我添加了一个响应链接和命令,解决了我的问题。为了让任何未来的读者都对他们未经索引的重复行表有所了解,你可以在下面或上面的链接中找到答案。

我的数据库中有一点搞砸了。它是重复的行,具有完全相同的信息(包括id)。

我是否可以使用查询来删除这些重复的ID但只有一个? 我想先在这里查看我的答案,如果我删除这个表,它将带我整个周末再次导入它(它很大)......

我正在考虑做

DELETE FROM tickets t1, tickets t2 WHERE t1.id = t2.id limit 1;

我不确定这会有效...... 谢谢!

3 个答案:

答案 0 :(得分:2)

正如Oceans所说

CREATE TEMPORARY TABLE tmp_tickets AS SELECT DISTINCT * FROM tickets;
DELETE FROM tickets;
INSERT INTO tickets SELECT * FROM tmp_tickets;
DROP TABLE tmp_tickets;

答案 1 :(得分:1)

要查找id列中的所有重复内容,您可以尝试:

select `id` 
   from `tickets`
   group by `id`
   having count(`id`)>1;

我会在gui(Heidi等)中尝试这个〜然后你可以在gui或直接查询中手动执行你的删除操作。

答案 2 :(得分:0)

我设法使用此处Remove duplicate rows in MySQL找到的解决方案解决了这个问题。为了节省您点击链接,查询看起来像这样

ALTER IGNORE TABLE jobs
ADD UNIQUE INDEX idx_name (site_id, title, company);

它删除了所有重复的索引,减去了一个。