根据您提供的需求,以下是为MySQL数据库中的`article`表创建指定索引和外键约束的SQL脚本:
```sql
-- 创建普通索引
ALTER TABLE article
ADD INDEX article_status (status),
ADD INDEX r_user_id (user_id),
ADD INDEX idx_article_gmt_latest_comment (gmt_latest_comment),
ADD INDEX idx_publish_type (publish_type),
ADD INDEX idx_audit_status (audit_status),
ADD INDEX idx_article_belong_column (belong_column),
ADD INDEX idx_article_user_id (user_id),
ADD INDEX idx_article_gmt_create (gmt_create),
ADD INDEX idx_article_view_count (view_count),
ADD INDEX idx_article_publish_audit_tag (publish_type, audit_status, tag),
ADD INDEX idx_article_publish_audit_tag_latest_cmt (publish_type, audit_status, tag, gmt_latest_comment),
ADD INDEX idx_article_title (title),
ADD INDEX idx_article_gmt_modify (gmt_modified),
ADD INDEX idx_gmt_user_id (gmt_modified, user_id);
-- 创建全文索引
ALTER TABLE article
ADD FULLTEXT INDEX idx_article_tag (tag),
ADD FULLTEXT INDEX idx_fulltext_tag (tag);
-- 添加外键约束
ALTER TABLE article
ADD CONSTRAINT r_user_id
FOREIGN KEY (user_id)
REFERENCES user(id);
```
### 注意事项:
1. **重复索引**:您在索引列表中定义了两个名为`r_user_id`的索引。通常情况下,您只需要一个基于`user_id`的索引即可。
2. **索引名称冲突**:确保索引名称在您的数据库中是唯一的,避免命名冲突。
3. **性能优化**:在实际应用中,请根据查询模式优化索引的设计,避免过多冗余索引影响写入性能。
请在执行上述脚本之前备份您的数据,并在测试环境中进行验证,以确保其符合您的具体需求。