好的,我現在正在網站上工作,顯示有關電子設備部分的信息。這些部分有時會得到修訂。零件編號保持不變,但它們在零件編號後附加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數據庫,並且在任何人詢問之前,我無法更改數據庫。
正常化PartcodePrefix,PartcodeSuffix中的部分代碼將是一個好的開始。 –
@SalmanA:...如果他們可以更改數據庫。 – Jon
@SalmanA正如我所說的,不能更改數據庫,否則這將是我會做的第一件事。 – Crinsane