サブクエリでMySQLクエリを取得しました。
SQL fiddleグループによるMysqlサブクエリの最適化by
テーブルの構造は次のとおりです。
CREATE TABLE `wildberries` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`brand` VARCHAR(50) NULL DEFAULT NULL,
`subject` VARCHAR(50) NULL DEFAULT NULL,
`article` VARCHAR(50) NULL DEFAULT NULL,
`size` VARCHAR(50) NULL DEFAULT NULL,
`color` VARCHAR(50) NULL DEFAULT NULL,
`income` INT(11) NULL DEFAULT NULL,
`income_sum_price` VARCHAR(50) NULL DEFAULT NULL,
`ordered` VARCHAR(50) NULL DEFAULT NULL,
`ordered_sum_price` VARCHAR(50) NULL DEFAULT NULL,
`ordered_max_by_day` VARCHAR(50) NULL DEFAULT NULL,
`return_before_payment` VARCHAR(50) NULL DEFAULT NULL,
`return_before_payment_sum_price` VARCHAR(50) NULL DEFAULT NULL,
`sales_by_payment` INT(11) NULL DEFAULT NULL,
`sales_by_payment_sum_price` VARCHAR(50) NULL DEFAULT NULL,
`return` INT(11) NULL DEFAULT NULL,
`return_sum_price` VARCHAR(50) NULL DEFAULT NULL,
`stock` VARCHAR(50) NULL DEFAULT NULL,
`source_file` VARCHAR(50) NULL DEFAULT NULL,
`from` DATE NULL DEFAULT NULL,
`end` DATE NULL DEFAULT NULL,
`clear_article` VARCHAR(50) NULL DEFAULT NULL,
`user_id` INT(11) NULL DEFAULT NULL,
`file_hash` VARCHAR(50) NULL DEFAULT 'sha1(concat(user_id, source_file))',
PRIMARY KEY (`id`),
INDEX `from` (`from`),
INDEX `end` (`end`),
INDEX `size_color_clear_article` (`size`, `color`, `clear_article`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
クエリは次のとおりです。
SELECT wildberries.clear_article AS clear_article, wildberries.color AS color, wildberries.size AS size, (
SELECT w2.stock
FROM wildberries w2
WHERE w2.clear_article = wildberries.clear_article AND w2.color = wildberries.color AND w2.size = wildberries.size
ORDER BY w2.from DESC
LIMIT 1) AS stock
FROM wildberries
GROUP BY clear_article , color, size
ORDER BY `from` DESC
このクエリは私に正しい値(最新の製品の日付の株式)を提供します。
しかし、このクエリは遅すぎます。インデックスを追加しようとしましたが結果はありません。
主なアイデアは:各製品(clear_article、サイズ、色との組み合わせ)に最新の 'from'を取得し、そのための '在庫'を取得することです。
誰かが私に助言を与えることはできますか?サブクエリなしでこのクエリを書き直すことは可能ですか?
更新日:サンプルデータがテーブルにあります。
もそこには、データをませんので、私は結果の多くを期待していない – scaisEdge
サンプルと期待される結果とテキストaddが...リンクolnyを使用していない:-( – Strawberry
サブクエリが選択される理由 – abr