有一种方法来优化这个mysql查询?

Ben*_*Ben 3 mysql sql query-optimization

SELECT T1.name AS hotel, 
       T2.name AS city 
  FROM (SELECT * 
          FROM hotel 
         WHERE name LIKE '$term1%') T1,
       (SELECT * 
          FROM city 
         WHERE name LIKE '$term2%') T2
 WHERE T1.city_id = T2.id
Run Code Online (Sandbox Code Playgroud)

T1有150000,T2有15000.(静态表!)我有这个表'name'的索引.

有一种方法来优化这个mysql查询?我也想做 - > LIKE'%term1%',但非常慢.

OMG*_*ies 7

第一步是使用ANSI-92 JOIN语法重写查询:

SELECT h.name AS hotel,
       c.name AS city
  FROM HOTEL h
  JOIN CITY c ON c.id = h.city_id
 WHERE h.name LIKE '$term1%'
   AND c.name LIKE '$term2%'
Run Code Online (Sandbox Code Playgroud)

之后,看看索引:

  • HOTEL.name
  • HOTEL.city_id
  • 城市名称
  • CITY.id

......各种组合.