私はしばらく MySQL を使用してきましたが、現在、実行に 60 秒かかるサブクエリに問題があります。:(「少し遅い」ように見えるので、これを変更する必要があります。また、私はSQLの専門家ではないので、これを行うためのよりスマートな方法があるかどうかを尋ねると思います。これが現在のクエリです:
SELECT VAR_ID, VAR_REF, DET_VAR_NOMB, DET_VAR_IMG, DET_VAR_MEDIDA, DET_VAR_DETALLE, SEN_FECH, SEN_VALOR
FROM variable, detalle_variable, senal
WHERE equipo_EQO_ID =6
AND detalle_variable_DET_VAR_ID = DET_VAR_ID
AND variable_VAR_ID = VAR_ID
AND SEN_ID
IN (
SELECT MAX( SEN_ID )
FROM senal
GROUP BY variable_VAR_ID
)
クエリの結果は次のとおりです(選択したいのはそれだけです)
VAR_ID VAR_REF DET_VAR_NOMB DET_VAR_IMG DET_VAR_MEDIDA DET_VAR_DETALLE SEN_FECH SEN_VALOR
8 101 vsth ../../img/foto/variable/play_blue.png 何か何か 2012-05-30 03:14:17 16
テーブルは次のようになります。
-- -----------------------------------------------------
-- Table `pgssgc_stap2`.`detalle_variable`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `pgssgc_stap2`.`detalle_variable` ;
CREATE TABLE IF NOT EXISTS `pgssgc_stap2`.`detalle_variable` (
`DET_VAR_ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT ,
`DET_VAR_NOMB` VARCHAR(45) NOT NULL ,
`DET_VAR_MEDIDA` VARCHAR(45) NULL DEFAULT NULL ,
`DET_VAR_DETALLE` VARCHAR(255) NULL DEFAULT NULL ,
`DET_VAR_IMG` VARCHAR(255) NULL DEFAULT NULL ,
PRIMARY KEY (`DET_VAR_ID`) )
ENGINE = InnoDB
AUTO_INCREMENT = 101
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;
-- -----------------------------------------------------
-- Table `pgssgc_stap2`.`variable`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `pgssgc_stap2`.`variable` ;
CREATE TABLE IF NOT EXISTS `pgssgc_stap2`.`variable` (
`VAR_ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT ,
`VAR_REF` VARCHAR(45) NOT NULL ,
`detalle_variable_DET_VAR_ID` INT(10) UNSIGNED NOT NULL ,
`equipo_EQO_ID` INT(10) UNSIGNED NOT NULL ,
PRIMARY KEY (`VAR_ID`) ,
INDEX `fk_variable_detalle_variable1` (`detalle_variable_DET_VAR_ID` ASC) ,
INDEX `fk_variable_equipo1` (`equipo_EQO_ID` ASC) ,
CONSTRAINT `fk_variable_detalle_variable1`
FOREIGN KEY (`detalle_variable_DET_VAR_ID` )
REFERENCES `pgssgc_stap2`.`detalle_variable` (`DET_VAR_ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_variable_equipo1`
FOREIGN KEY (`equipo_EQO_ID` )
REFERENCES `pgssgc_stap2`.`equipo` (`EQO_ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
AUTO_INCREMENT = 11
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;
-- -----------------------------------------------------
-- Table `pgssgc_stap2`.`senal`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `pgssgc_stap2`.`senal` ;
CREATE TABLE IF NOT EXISTS `pgssgc_stap2`.`senal` (
`SEN_ID` INT(11) NOT NULL AUTO_INCREMENT ,
`variable_VAR_ID` INT(10) UNSIGNED NOT NULL ,
`SEN_FECH` DATETIME NULL DEFAULT NULL ,
`SEN_VALOR` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`SEN_ID`) ,
INDEX `fk_senal_variable1` (`variable_VAR_ID` ASC) ,
CONSTRAINT `fk_senal_variable1`
FOREIGN KEY (`variable_VAR_ID` )
REFERENCES `pgssgc_stap2`.`variable` (`VAR_ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
AUTO_INCREMENT = 2086
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;
お返事ありがとうございます。