2017-03-01 83 views
-2

我最近碰到一個查詢就在我們的辦公室討論的一個,MySql的選擇查詢優化

SELECT t1.id, t1.name, t1.date AS date_filter, 
     (SELECT t2.column_x 
     FROM table_2 t2 
     WHERE t2.date = date_filter LIMIT 1 
     ) AS column_x 
FROM table_1 t1 
WHERE t1.category_id = 10 
ORDER BY t1.date 
LIMIT 10; 

子查詢返回從第一個表的日期相匹配的第二個表中的列值。 這個查詢沒有以優化的速度運行,你們可以通過我什麼方式來即興表現?

乾杯

回答

0

這將有助於有SHOW CREATE TABLE兩個表,加上EXPLAIN SELECT ...

指標需要:

t1: INDEX(category_id, date) 
t2: INDEX(date) 

子查詢不無ORDER BY意義 - 「1」你想要哪一行?