【发布时间】:2012-08-06 21:57:33
【问题描述】:
我认为我的 MySQL 服务器或我正在使用的查询有问题。我不确定是哪个。
服务器是VM Ubuntu12.4 4 cores/16gb Ram MySQL 5.5.24 x86
我的查询:
INSERT INTO `NEWTEXT`.`Order_LineDetails`
( OrderLineItem_ID, Customer_ID, Order_ID, ProductName )
SELECT
'Order_Details'.'OrderDetailID',
'Orders'.'CustomerID',
'Order_Details'.'OrderID',
'prods'.'ProductName'
FROM Order_Details
JOIN Orders ON Orders.OrderID = Order_Details.OrderID
JOIN Products prods ON prods.ProductID = Order_Details.ProductID
WHERE Orders.OrderID = 500000
我不确定从哪里开始寻找问题。上面的查询需要 9+ 秒才能完成。 Order_Details 表中包含 1,800,000 多条记录。
让我烦恼的是,当我运行选择查询时,它也会变慢。但是,我有另一台正在运行 win2k MsSql 的服务器,它几乎是即时使用相同的 SELECT 查询。
我希望有人可以在这里为我指明正确的方向。
编辑
好吧,很抱歉给您带来麻烦,感谢您的帮助。
我发现问题在于,在完成导入后,我跳过了通常为新表分配PrimaryKey 的步骤。我知道,:( 笨。
无论如何!不要忘记分配您的Primary Keys!
【问题讨论】:
-
请显示您的表结构,以便我们查看您定义了哪些索引。
-
您是否查看过选择查询的 EXPLAIN 输出?
-
您的插入有 3 列,但您的选择有 4 列
-
正如@MikeBrant 所说,显示您的表结构。您可以使用sqlfiddle.com 进行分享。
-
@Nathan 这实际上应该不会对性能产生影响,尽管如果它最终不会被插入,那么将 prods 表包含在 select 查询中似乎很奇怪。
标签: mysql ubuntu-12.04