[英]MySQL Query 127 seconds of execution
我有这个SQL查询:
SELECT * FROM magnitudes t1 INNER JOIN value_magnitudes t2 ON t1.id = t2.magnitude_id WHERE t1.floor_id = 42 AND t2.reading_date = (SELECT Max(reading_date) FROM value_magnitudes WHERE t2.magnitude_id = t1.id);
我的DB Schema是:
CREATE TABLE magnitudes (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NULL ,
sdi_id VARCHAR(255) NULL ,
sdi_id_floor VARCHAR(255) NULL ,
visible TINYINT(1) UNSIGNED NULL ,
history TINYINT(1) UNSIGNED NULL ,
created_at DATETIME NULL ,
updated_at DATETIME NULL ,
floor_id INT(11) NULL ,
unit VARCHAR(255) NULL ,
kind_id INT(11) NULL ,
sample_time INT(11) NULL ,
history_from DATETIME NULL DEFAULT 2011-02-22 11:18:07 ,
PRIMARY KEY(id));
CREATE TABLE value_magnitudes (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
value FLOAT NULL ,
magnitude_id INT(11) NULL ,
sdi_belongs_id VARCHAR(255) NULL ,
reading_date DATETIME NULL ,
created_at DATETIME NULL ,
updated_at DATETIME NULL ,
PRIMARY KEY(id));
我真正想要的是,获得最后value_magnitudes
取决于最后updated_at
通过magnitudes.id on values_magnitudes.magnitude_id
谢谢。
SELECT TOP 1 VM.* FROM value_magnitudes VM, magnitudes M WHERE M.id = VM.id ORDER BY updated_at DESC
SELECT VM.* FROM value_magnitudes VM, magnitudes M WHERE M.id = VM.id ORDER BY updated_at DESC LIMIT 0,1;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.