1

I have a query

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’

which is causing some issues with the site speed, sometimes to the point the site crashes. Would it be better for me to split this into multiple queries?

Indexes

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       
4

2 回答 2

2

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

于 2013-04-21T12:58:27.413 回答
0

不,您最好将此查询分解为多个查询。

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

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

于 2013-04-21T12:58:43.640 回答