也許某人在這裏可以幫助我/提供關於如何做某些事情的提示。我們在mySql中使用了兩個表,都是MyISAM,utf8。第一個表格保存所有對象的註冊,秒錶保存所有對象的附加信息,如名稱等。MySQL訂單從左列加入
表1和表2之間的匹配將基於兩個表中的代碼列。爲什麼不ID?因爲table1被外部系統填充,所以它不知道它所鏈接的對象的id。另外,我們可以對不屬於表2中可用對象的註冊,但需要在表中註冊1.
表1 - 註冊執照:(+/- 33.000.000行)
+-------------+
| id |
| code |
| datetime |
+-------------+
表2 - 對象:(+/- 55.000行)
+-------------+
| id |
| code |
| name |
| description |
| etc. |
+-------------+
這兩個表都有一些列上的索引。定期選擇查詢會很好。它在0.0017秒內創建了32.382.742行的結果。
SELECT * FROM table1 LEFT JOIN table2 on table2.code = table1.code
當我在表1的列上訂購時,仍然可以。它在0.0179秒內創建了32.382.742行的結果。
SELECT * FROM table1 LEFT JOIN table2 on table2.code = table1.code ORDER BY table1.datetime
當我在表2的列上訂購時,它非常糟糕。 MySQL的SHOW processlist;
顯示一個正在創建的臨時表,並且沒有停止300秒,所以我們殺死了MySQL。
SELECT * FROM table1 LEFT JOIN table2 on table2.code = table1.code ORDER BY table2.name
還試圖從table2中選擇表1中的RIGHT JOIN,但這也行不通。
如何解決這個/得到這個快?