我想在這裏查詢兩個相當大的表來拉動一些結果,並且效率有些麻煩。低效JOIN方法?
注意:我只包含了相關的列,使其看起來不那麼雜亂!
表A(股票)具有的productID,OWNERID,數列
表B(業主)的ID,accountHolderID和名稱列
我想要做的就是查詢表A和地方的productID = X拉起Stock.productID,Stock.accountHolderID和Owners.name。這兩個表之間的關係是Stock.ownerID = Owners.ID,所以如果WHERE條件拉出5個productID,那麼我希望TableB中的名稱與TableA中的ownerID匹配。
在這種情況下,唯一的唯一的ID從表B
Owners.ID只是做TableA上的基本的SELECT查詢這些產品需要15秒但是當我添加一個INNER JOIN匹配的東西最多TABLEB查詢需要更長的時間,10分鐘以上。我猜我已經設計了這個查詢效率低下。
SELECT
Owners.name,
Stock.productID,
Stock.ownerID
FROM Stock
INNER JOIN
Owners
ON Stock.ownerID = Owners.ID
WHERE
Stock.productID = 42301679
如何使此查詢更有效?
將OR添加到WHERE條件允許我一次拉多個productID嗎?
15秒似乎很長一段時間。我可以問問環境嗎? –
似乎是一個非常標準的查詢。這些表上的行數是多少?哪些索引在那裏?另外,你使用的是什麼DBMS? (mysql,oracle等)。我的第一個猜測是缺少索引。 – Jody
只是再次進行基本的SELECT查詢來檢查時間,實際上是9秒。 mySQL環境。股票表中包含了不到21,489,000個條目,Owners表格大約是439,000 – Jay