2010-10-15 63 views
0

1)我有一個表employee(emp_id,emp_name,emp_salary); 我想找到頂部沒有使用限制在多個數據庫上運行單個查詢

2)如何運行一個查詢,以便它需要記錄從databses兩個數據庫MySQL服務器 本應在單一MySQL查詢完成2員工有最高工資

在此先感謝您的任何幫助或回覆

+0

看起來像這樣會回答我的第一個問題。 FAcebook塊..需要達到家庭閱讀.. :(http://www.facebook.com/note.php?note_id=206034210932 – Parag 2010-10-23 06:52:32

回答

1

單個查詢無法一次跟兩個數據庫服務器。這是不允許的。但您可以使用FEDERATED表格鏈接兩臺服務器。這使得「遠程」表格看起來好像真的存儲在本地。

但是,你仍然堅持必須使用聯合查詢,除非兩個表可以以某種方式聯接。

SELECT blah,blah,blah 
FROM localtable 

UNION 

SELECT blah,blah,blah 
FROM federatedtable 
0

那麼LIMIT究竟有什麼問題?

select * 
    from (select * 
      from db1.employee 
     order by salary desc limit 2 
     union 
     select * 
      from db2.employee 
     order by salary desc limit 2 
) emp 
order by emp.salary desc limit 2 

如果BD1和DB2的員工肯定是不同的,或者你不想刪除重複改變UNION ALL

+0

http://forge.mysql.com/wiki/Top10SQLPerformanceTips它說LIMIT米,n的速度可能並不像聽起來那樣快。學習如何改進它並閱讀關於使用MySQL的高效分頁的更多信息 – Parag 2012-08-01 09:46:07

+0

這個性能提示指的是當你使用LIMIT並且'm'非常大時,在我們的例子中'm'是0(省略),這會提高性能,尤其是如果你有'工資'字段的索引。 – 2012-08-07 06:51:15