Php MySQL查询以删除不再相关的数据
我正在使用PHP和MySQL使用Twitter流API构建一个推特数据库。除了“tweets”表之外,还有单独的表来跟踪提及、URL、hashtag和用户 我让它定期检查,只保留我每个关键字最近的1000条推文,从数据库中删除其余的推文。我想做的是清理关联表中的数据(通过关联表,我指的是提及、URL、hashtags和users表) 我想知道删除“tweets”表中没有匹配tweet_id的所有提及、url、hashtag和用户的最有效方法是什么 表结构:Php MySQL查询以删除不再相关的数据,php,mysql,mysqli,Php,Mysql,Mysqli,我正在使用PHP和MySQL使用Twitter流API构建一个推特数据库。除了“tweets”表之外,还有单独的表来跟踪提及、URL、hashtag和用户 我让它定期检查,只保留我每个关键字最近的1000条推文,从数据库中删除其余的推文。我想做的是清理关联表中的数据(通过关联表,我指的是提及、URL、hashtags和users表) 我想知道删除“tweets”表中没有匹配tweet_id的所有提及、url、hashtag和用户的最有效方法是什么 表结构: -- -- Table structu
--
-- Table structure for table `tweets`
--
CREATE TABLE IF NOT EXISTS `tweets` (
`tweet_id` bigint(20) unsigned NOT NULL,
`tweet_text` varchar(200) NOT NULL,
`entities` text NOT NULL,
`created_at` datetime NOT NULL,
`geo_lat` decimal(10,5) DEFAULT NULL,
`geo_long` decimal(10,5) DEFAULT NULL,
`user_id` int(10) unsigned NOT NULL,
`screen_name` char(20) NOT NULL,
`name` varchar(40) DEFAULT NULL,
`profile_image_url` varchar(200) DEFAULT NULL,
`tweet_keywords` varchar(128) NOT NULL,
PRIMARY KEY (`tweet_id`),
KEY `created_at` (`created_at`),
KEY `user_id` (`user_id`),
KEY `screen_name` (`screen_name`),
KEY `name` (`name`),
FULLTEXT KEY `tweet_text` (`tweet_text`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `tweet_mentions`
--
CREATE TABLE IF NOT EXISTS `tweet_mentions` (
`tweet_id` bigint(20) NOT NULL,
`source_user_id` bigint(20) NOT NULL,
`target_user_id` bigint(20) NOT NULL,
KEY `tweet_id` (`tweet_id`),
KEY `source` (`source_user_id`),
KEY `target` (`target_user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `tweet_tags`
--
CREATE TABLE IF NOT EXISTS `tweet_tags` (
`tweet_id` bigint(20) NOT NULL,
`tag` varchar(100) NOT NULL,
KEY `tweet_id` (`tweet_id`),
KEY `tag` (`tag`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `tweet_urls`
--
CREATE TABLE IF NOT EXISTS `tweet_urls` (
`tweet_id` bigint(20) NOT NULL,
`url` varchar(140) NOT NULL,
KEY `tweet_id` (`tweet_id`),
KEY `url` (`url`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `users`
--
CREATE TABLE IF NOT EXISTS `users` (
`user_id` bigint(20) unsigned NOT NULL,
`screen_name` varchar(20) NOT NULL,
`name` varchar(40) DEFAULT NULL,
`profile_image_url` varchar(200) DEFAULT NULL,
`location` varchar(30) DEFAULT NULL,
`url` varchar(200) DEFAULT NULL,
`description` varchar(200) DEFAULT NULL,
`created_at` datetime NOT NULL,
`followers_count` int(10) unsigned DEFAULT NULL,
`friends_count` int(10) unsigned DEFAULT NULL,
`statuses_count` int(10) unsigned DEFAULT NULL,
`time_zone` varchar(40) DEFAULT NULL,
`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`user_id`),
KEY `user_name` (`name`),
KEY `last_update` (`last_update`),
KEY `screen_name` (`screen_name`),
FULLTEXT KEY `description` (`description`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
查看外键约束。需要查看表结构Sok-添加了表结构我用谷歌搜索并找到了本文:。使用外键约束不就是在我的tweets表中添加一个限制,这样我就不能在不首先删除所有相关数据的情况下删除tweet吗?我只是想在删除推文时自动删除相关数据。啊,明白了。我将引擎改为InnoDB,并添加了带有“更新级联”和“删除级联”的外键约束。效果很好。