さて、私は現在、電子機器の部品に関する情報を表示するWebサイトに取り組んでいます。これらの部分は時々改訂されます。部品番号は同じままですが、部品番号にA、B、Cなどが追加されるため、文字が「高い」ほど新しいものになります。また、日付が追加されます。したがって、テーブルは次のようになります。
------------------------------------------------------------
| Partcode | Description | Partdate |
------------------------------------------------------------
| 12345A | Some description 1 | 2009-11-10 |
| 12345B | Some description 2 | 2010-12-30 |
| 17896A | Some description 3 | 2009-01-12 |
| 12345C | Some description 4 | 2011-08-06 |
| 17896B | Some description 5 | 2009-07-10 |
| 12345D | Some description 6 | 2012-05-04 |
------------------------------------------------------------
今必要なのは、パーツの最新リビジョンのデータです。したがって、この例では、次のものが必要です。
12345Dおよび17896B
一部の人が私の前に構築したクエリは、次のようなものです。
SELECT substring(Partcode, 1, 5) AS Part,
(
SELECT pt.Partcode
FROM Parttable pt
WHERE substring(pt.PartCode, 1, 5) = Part
ORDER BY pt.Partdate DESC
LIMIT 0,1
),
(
SELECT pt.Description
FROM Parttable pt
WHERE substring(pt.PartCode, 1, 5) = Part
ORDER BY pt.Partdate DESC
LIMIT 0,1
),
(
SELECT pt.Partdate
FROM Parttable pt
WHERE substring(pt.PartCode, 1, 5) = Part
ORDER BY pt.Partdate DESC
LIMIT 0,1
)
FROM Parttable
GROUP BY Part
ご存知のように、このクエリはめちゃくちゃ遅く、本当に非効率的だと感じます。しかし、このクエリを最適化する方法について頭を悩ませることはできません。
だから私は本当に誰かが助けてくれることを願っています。
前もって感謝します!
PS。私はMySQLデータベースに取り組んでいますが、誰かが尋ねる前に、データベースを変更することはできません。