Php MySQL查询执行127秒
我有一个SQL查询:Php MySQL查询执行127秒,php,mysql,sql,database-schema,Php,Mysql,Sql,Database Schema,我有一个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); 我的数据库模式是: CREATE TABLE magn
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);
我的数据库模式是:
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));
我真正想要的是,根据magnitudes.id on values\u magnitudes.magnitude\u id
谢谢。
选择VM.*从数值大小VM,其中M.id=VM.id,按描述限制0,1处更新的顺序代码>一个关于value\u magnizes.magnize\u id的索引会有所帮助-但是你应该总是对一个你正在测试运行缓慢的查询运行一个解释,它会向你展示它在“幕后”是如何工作的,并且是开发者数据库工具Kit的一个重要组成部分实际上我是一个程序员,数据库已经完成了XD,每次我必须在这个数据库中执行SQL查询时,我都很紧张,我不能花时间来改进数据库,或者做一些与数据库相关的事情,只是一些SQL,即使我也不是SQL专家,任何人都帮不上忙,所以我认为stackoverflow是最好的解决方案。顺便说一句,谢谢你的帮助。如果你不能花时间添加索引,或者SQL人员不能为数据库设计添加正确的索引(value_magnificates.magnificates_id与magnificates.id之间的索引应该使用外键约束),那么几乎不可能提高查询速度。谢谢,我会告诉他们,我只是想找到一个解决方案,谢谢。我做这个查询是为了测试选择前1个VM.*从value\u magnificates VM,magnificates M,其中M.id=VM.magnificate\u id和M.floor\u id=42 ORDER,通过在DESC更新\u
,但执行时间仍然很长,这可能是问题所在?
SELECT TOP 1 VM.* FROM value_magnitudes VM, magnitudes M WHERE M.id = VM.id ORDER BY updated_at DESC