2014-04-29 42 views
0

我有一個.NET連接到MYSQL後端的應用程序。在開發機器和服務器上都安裝了MySQL Connector 6.5.5,我使用實體框架。MySQL連接器 - 實體框架

當我查詢我的本地機器上的數據庫,並查看生成的SQL - 查詢包含選擇X,Y,Z內部聯接A內部聯接B其中C in(1,2,3)。

但是,當我將完全相同的系統部署到活動服務器時,查詢將完全更改爲選擇X,Y,Z,LEFT OUTER JOIN 1,LEFT OUTER JOIN 2,LEFT OUTER JOIN 3其中1 = C或2 = C或3 = C。

首先 - 我不明白爲什麼SQL不匹配,因爲兩臺機器都安裝了相同的連接器。其次,第二個版本花費10分鐘,而第一個版本花費10秒鐘。我如何將服務器與我的開發機器對齊?

謝謝!

回答

0

個人的個人經驗,我建議你檢查服務器上是否有其他連接。 在本地環境中,您確信您是唯一一個在暴露於mysql端口掃描的實時環境中連接到數據庫的人,並且還有來自其他用戶的其他查詢等。 第二個是你確定你在這兩臺機器上有相同的mysql數據庫版本嗎?它可能是(我不確定)對於不同的mysql版本,有不同的mysql語句翻譯版本。

此外,您可以嘗試創建一個過程來檢查遠程連接和本地連接,以瞭解是否需要更多時間連接到數據庫等。

在瘋狂之前做一些檢查。

+0

嗨,數據庫託管在Web服務器上,兩個環境當前連接到同一個實時數據庫。部署時它是'本地'的,所以它是本地時間較長的地方。 – Oriental

+0

這真的很奇怪......所以它需要更多的時間在本地環境中,而不是在線部署它更快(抱歉的問題,但我是意大利人,我想確定你是什麼意味着) – makemoney2010

+0

是的。開發機器和服務器都連接到實時服務器數據庫,因此遠離數據庫的開發環境要快得多。原因是我在我的問題中提到的查詢形式。我只需要弄清爲什麼MySQL Connector在部署到服務器時生成不同的SQL! – Oriental