【发布时间】:2015-09-15 16:49:28
【问题描述】:
我有一个类似的专栏:
CREATE TABLE `comments` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`thread_id` int(10) unsigned NOT NULL DEFAULT '0',
`content` mediumtext NOT NULL,
`parent_id` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
- id - 唯一的评论标识符
- thread_id - 该评论的线程
- parent_id - 此评论的父评论
现在,该表中可以有两种类型的 cmets。一个是对主线程的注释(在这种情况下,thread_id 不为空),对注释的注释(在这种情况下,thread_id 为空,parent_id 不为空)。我想为 thread_id 和 parent_id 创建一个索引以进行优化,以及外键和引用,以便:
- 版主删除主线程,该线程的所有 cmets 以及可能的 cmets 也将递归删除
- 版主删除主线程中的一些评论,该评论及其子评论也将被递归删除
如果孩子将被删除,则不采取任何行动,因为没有“下面”。
我是这样尝试的:
INDEX (parent_id, thread_id),
FOREIGN KEY (parent_id, thread_id)
REFERENCES (id)
但不确定是否可以,因为在同一张桌子上工作让我有点困惑。
【问题讨论】:
-
那么,您的问题是什么?
-
我会举一个例子来说明如何有效地做到这一点,尝试了一些事情,但由于某些原因它不起作用。
-
我在考虑类似 INDEX (parent_id, thread_id), FOREIGN KEY (parent_id, thread_id) REFERENCES (id) 之类的东西,但不确定是否可以。
标签: mysql sql indexing foreign-keys