我正在开发一个事件跟踪系统,该系统使用少数查找表以及主日志记录表。在我撰写的报告中,可以选择一个对象来查看统计信息。界面按重要性递减的顺序显示所有对象(即命中)。
两个表的架构(略有减少,但您能理解以下要点):
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`)
);
我遇到问题的查询如下。我的〜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
count_rows DESC,
leo.object_desc ASC
返回值: Using index; Using temporary; Using filesort
那么-有什么错我的架构和/或查询MySQL来依傍temporary
和filesort
?还是使用ORDER BY获得的优化?
好吧,文档给出了出现“使用临时”时的确切原因:
可以在以下条件下创建临时表:
如果有一个ORDER BY子句和另一个GROUP BY子句,或者ORDER BY或GROUP
BY包含联接队列中第一个表以外的表中的列,则会创建一个临时表。DISTINCT与ORDER BY结合使用可能需要一个临时表。
如果使用SQL_SMALL_RESULT选项,则MySQL使用内存中临时表,除非查询还包含需要磁盘存储的元素(稍后描述)。
快速扫描显示您患有#1。
而这个博客从2009年说:“使用文件排序”指的是那种不能用指数来进行。由于您要按计算字段排序,所以这也将是正确的。
因此,这就是“错误”。
问题内容: 我 捕捉图像 ,然后 存储到SD卡 ,并 在列表中出现 ,但在这里我需要一个小的变化, 还是我老在上面,最新的在底部 ,所以现在 我要显示在顶部的最新图片 的基础上,使用datetimestamp作为文件名的一部分。 UploadActivity.java 代码:- 注意: 我将图像存储到SD卡时使用的是日期/时间戳。 所以最终看起来像这样: 和 仍文件中列举 如下格式,如下图所示:
我正在使用Apache Camel处理SFTP目录中的文件。该目录将同时接收多个文件。如何控制camel按顺序使用文件?例如,目录my\u directory将同时接收文件file1、file2、file3、file4。我希望camel按照file1-file2-file3-file4的顺序消费。
qt 使用opencv,添加外部库,一直找不到头文件,应该如何解决 下面是.pro 文件以及.pri 文件 下面是报错信息 尝试过更改INCLUDPATH 改为 -I………………
问题内容: 我正在创建一个简单的项目,使我可以使用gwt上传和下载文件。我在下载服务器上的文件时遇到了麻烦。 对于文件上传,我使用了http://code.google.com/p/gwtupload/并按照那里的说明进行操作。我的文件存储在网站容器外部的服务器上(在硬盘上), 现在,当涉及到文件下载时,我希望用户按下下载按钮,并且当前选择的任何项目都将下载。我真的不知道该怎么做 我知道我需要下载
问题内容: 我在这里遇到的一个问题可能是一个我忽略的非常简单的答案……如何使用NSURL检索本地文件?我在这里: 但是,在成功构建之后,它将挂在var urlpath上。我到处搜寻,并在这里和其他地方尝试了一些建议,但无济于事。请帮忙?:( 问题答案: 您正在尝试从文件系统而不是从Web加载文件。 对于创建,您需要使用fileURLWithPath:类方法。 更改您的方法,例如: 迅捷2 迅捷3
问题内容: 如果文件是A ,我可以解压缩文件,如果文件类型是I,则可以解压缩文件。我如何使用python 2.7进行此工作? 问题答案: 试试这个包: