我有一个数据库,其中列出了相当不错的服务器(四核 Xeon 2.0Ghz、16GB RAM、SSD 驱动器)。该数据库有大约 180,000 个列表。服务器上还没有流量,我只是用大量列表对其进行测试,以确保以后实际上有那么多实时列表和实际流量时没有问题。
但即使还没有流量,我觉得他们应该比实际返回得更快。
从慢查询日志中,我可以找到:
# Query_time: 1.575742 Lock_time: 0.000113 Rows_sent: 12 Rows_examined: 549024
有 180,000 条记录,它只需要返回 12 条,但它检查了超过 500,000 条记录并且需要超过 1.5 秒?一定有什么问题,对吧?:(
实际查询是:
SELECT a.listing_id, a.name, a.item_price, a.max, a.nb, a.currency,
a.end_time, a.closed, a.bold, a.hl, a.buy_price, a.is_offer, a.reserve,
a.owner_id, a.postage_amount, a.fb_current_bid, a.type, a.start_time,
a.is_relisted_item, a.enable
FROM db_listings a
LEFT JOIN db_users u ON u.user_id=a.owner_id WHERE a.active=1 AND
a.approved=1 AND a.deleted=0 AND a.creation_in_progress=0 AND
a.closed=0 AND (a.list_in='store' OR u.shop_active='1')
GROUP BY a.listing_id
ORDER BY a.list_in ASC, a.end_time ASC LIMIT 0, 12;
已经在 db_listings 中的 listing_id 以及 db_users 中的 user_id 上设置了索引。我不认为 db_users 加入有问题,因为现在那里只有 2 个用户。
如果您需要任何其他信息来解决此问题,请告诉我。
任何帮助是极大的赞赏 :)