很长的mysql查询

时间:2013-04-21 12:50:08

标签: mysql sql

我有一个查询

SELECT * 
  FROM tbl_auction_listing 
  JOIN tbl_user ON tbl_auction_listing.user_id = tbl_user.user_id 
  JOIN tbl_subject ON tbl_auction_listing.subject_id = tbl_subject.subject_id 
  JOIN tbl_medium ON tbl_auction_listing.medium_id = tbl_medium.medium_id 
  JOIN tbl_style ON tbl_auction_listing.style_id = tbl_style.style_id 
 WHERE tbl_auction_listing.item_number = '2736503389’

导致网站速度出现问题,有时会导致网站崩溃。我将它拆分成多个查询会更好吗?

索引

tbl_auction_listing 0   PRIMARY 1   auction_listing_id  A   18739               BTREE       
tbl_auction_listing 1   Listing - subject_id    1   subject_id  A   32          YES BTREE       
tbl_auction_listing 1   Listing - medium_id 1   medium_id   A   32          YES BTREE       
tbl_auction_listing 1   Listing - style_id  1   style_id    A   38          YES BTREE       
tbl_auction_listing 1   Listing - colour_id 1   colour_id   A   30          YES BTREE       
tbl_auction_listing 1   Listing - user_id   1   user_id A   1441                BTREE       
tbl_auction_listing 1   Listing - price_id  1   price_id    A   20          YES BTREE       
tbl_auction_listing 1   Listing - status    1   status  A   8           YES BTREE       

2 个答案:

答案 0 :(得分:2)

你可以:
 1.增加Web服务器的默认http请求时间
 2.在tbl_auction_listing.item_number上建立索引  3.缓存一些不太容易改变的表格  4.增加应用程序和数据库服务器上的sql查询超时
 5.对数据库进行非规范化

答案 1 :(得分:0)

不,将此查询分解为多个查询会不会更好。

最好将索引添加到数据库中以加快查询速度。每个子表都应在其主键上有一个索引。例如,tbl_style应该有tbl_style(style_id)的索引,依此类推。

您的索引“方向错误”。它们应该在引用表本身上,而不是(或不仅仅)在主表上。