過去兩天我一直在搞單個查詢。 我試圖解剖它的各個方面的個別部分,並發現查詢只有當我添加在左外部聯接中斷。 我試過很多不同的方法,甚至有我的參考表加入到我想在我的實際聲明中使用的一些表中,但迄今無濟於事。MySQL - 無盡的查詢左外部聯接
(注;列選擇一直保持在「*」的可讀性,有一噸的行這裏通常的行爲是一樣的,當我與*選擇測試。)
我的完整的查詢:
SELECT *
FROM SO_SalesOrder so
INNER JOIN SO_Leg as l ON l.SalesOrder = so.SalesOrdernr
INNER JOIN SO_Cargo cg ON cg.Cargonr = l.Cargo
INNER JOIN SO_Activity ea ON ea.Activitynr = l.EndActivity
INNER JOIN SO_Activity ba ON ba.Activitynr = l.BeginActivity
LEFT OUTER JOIN RP_TripActivity eta ON eta.Activity = l.EndActivity
LEFT OUTER JOIN Product p ON p.Productnr = cg.Product
WHERE ba.Date BETWEEN '2015-10-01 00:00:00' AND '2015-10-07 23:59:59'
AND OrderStatus != 2
AND so.Customer = 95;
此數據庫已從MS-SQL服務器傳輸,因此我正在重寫查詢以適應此更改。 舊查詢(仍然)的作品,並用於如下:
SELECT *
FROM dbo.SO_SalesOrder as so
INNER JOIN dbo.SO_Leg as l ON l.SalesOrder = so.SalesOrdernr
INNER JOIN dbo.SO_Cargo AS cg ON cg.Cargonr = l.Cargo
INNER JOIN dbo.SO_Activity AS ea ON ea.Activitynr = l.EndActivity
INNER JOIN dbo.SO_Activity AS ba ON ba.Activitynr = l.BeginActivity
LEFT OUTER JOIN dbo.RP_TripActivity AS eta ON eta.Activity = l.EndActivity
LEFT OUTER JOIN dbo.RP_Trip AS et ON et.Tripnr = eta.Trip
LEFT OUTER JOIN dbo.RP_ResourceCombination AS erc ON erc.ResourceCombinationnr = eta.ResourceCombination
LEFT OUTER JOIN dbo.RP_Resource AS er1 ON er1.Resourcenr = erc.Truck
LEFT OUTER JOIN dbo.RP_ResourceCompany AS erc1 ON erc1.Resource = er1.Resourcenr AND erc1.Company = et.Company
LEFT OUTER JOIN dbo.VM_Vehicle AS ev1 ON ev1.Vehiclenr = er1.Vehicle
LEFT OUTER JOIN dbo.RP_Resource AS er3 ON er3.Resourcenr = erc.Driver
LEFT OUTER JOIN dbo.HR_Employee AS eemp3 ON eemp3.Employeenr = er3.Employee
LEFT OUTER JOIN dbo.Product AS p ON p.Productnr = cg.Product
WHERE ba.Date BETWEEN '2015-10-01 00:00:00'
AND '2015-10-07 23:59:59'
AND OrderStatus != 2
AND so.Customer = 95;
會有人也許有任何指針作爲的地方,我可能會搞砸了?
我試過的東西: 刪除WHERE子句,添加「AS」關鍵字(也在MSSQL中完成),試圖在一個表上嘗試一個左外連接和一個內連接。
編輯:可能值得注意的是,這將是我第一次使用MySQL而不是MSSQL/T-SQL,我當然試圖查找其他示例,但迄今爲止這並沒有幫助我。
是否已經在mysql上創建了sql-server中存在的索引?我不知道sql-server,但是mysql只能爲每個查詢使用一個索引,所以即使你創建了相同的索引,它們可能仍然不適合你。 – e4c5
顯然'MySQL'可以爲每個查詢使用多個索引。來源:http://stackoverflow.com/questions/12222630/can-mysql-use-multiple-indexes-for-a-single-query –
如果你有權訪問SQL Server Management Studio,你可以使用查詢優化工具創建應該有助於查詢執行時間的索引和統計信息。 – HashPsi