我正在开发一个事件跟踪系统,该系统使用少量查找表以及主要日志记录表.在我正在编写的报告中,可以选择一个对象来查看统计信息.界面按重要性降低(即命中)的顺序显示所有对象.
这两个表的架构(略微修剪,但你得到了要点):
CREATE TABLE IF NOT EXISTS `event_log` (
`event_id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(5) DEFAULT NULL,
`object_id` int(5) DEFAULT NULL,
`event_date` datetime DEFAULT NULL,
PRIMARY KEY (`event_id`),
KEY `user_id` (`user_id`),
KEY `object_id` (`object_id`)
);
CREATE TABLE IF NOT EXISTS `lookup_event_objects` (
`object_id` int(11) NOT NULL AUTO_INCREMENT,
`object_desc` varchar(255) NOT NULL,
PRIMARY KEY (`object_id`)
);
Run Code Online (Sandbox Code Playgroud)
我遇到问题的查询如下.它与我的约100个条目的表一起工作正常,但是EXPLAIN让我有点担心.
explain SELECT
el.object_id,
leo.object_desc,
COUNT(el.object_id) as count_rows
FROM
event_log el
LEFT JOIN lookup_event_objects leo ON leo.object_id = el.object_id
GROUP BY
el.object_id
ORDER BY …Run Code Online (Sandbox Code Playgroud) 考虑我们有两个表,Users和Posts.user_id是Posts表中的外键,是表中的主键Users.
这两个sql查询之间有什么区别?
select user.name, post.title
from users as user, posts as post
where post.user_id = user.user_id;
Run Code Online (Sandbox Code Playgroud)
与
select user.name, post.title
from users as user join posts as post using user_id;
Run Code Online (Sandbox Code Playgroud) 所以我有两个表,我需要能够得到计数.其中一个包含内容,另一个包含它与类别表之间的关系.这是DDl:
CREATE TABLE content_en (
id int(11) NOT NULL AUTO_INCREMENT,
title varchar(100) DEFAULT NULL,
uid int(11) DEFAULT NULL,
date_added int(11) DEFAULT NULL,
date_modified int(11) DEFAULT NULL,
active tinyint(1) DEFAULT NULL,
comment_count int(6) DEFAULT NULL,
orderby tinyint(4) DEFAULT NULL,
settings text,
permalink varchar(255) DEFAULT NULL,
code varchar(3) DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE KEY id (id),
UNIQUE KEY id_2 (id) USING BTREE,
UNIQUE KEY combo (id,active) USING HASH,
KEY code (code) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=127126 DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)
而对于另一张桌子
CREATE TABLE …Run Code Online (Sandbox Code Playgroud)