Mysql查询无法发送数据
我的查询需要很长时间才能处理“发送数据”中的ansMysql查询无法发送数据,mysql,database,Mysql,Database,我的查询需要很长时间才能处理“发送数据”中的ans SELECT items.defindex、items.name、items.image\u url、price.median作为价格、user\u items.id、user\u items.item\u id、user\u items.original\u id 来自用户\u项 用户\项上的内部联接项。defindex=items.defindex 用户\u项目的左联合价格。defindex=price.defindex&&user\u项目
SELECT items.defindex、items.name、items.image\u url、price.median作为价格、user\u items.id、user\u items.item\u id、user\u items.original\u id
来自用户\u项
用户\项上的内部联接项。defindex=items.defindex
用户\u项目的左联合价格。defindex=price.defindex&&user\u项目。质量=price.quality
其中user\u items.user\u id=6&&user\u items.flag\u无法\u trade=0&&price.price>=0&&items.price为所有这些字段创建索引:
user_items.defindex
items.defindex
user_items.defindex
price.defindex
user_items.quality
price.quality
user_items.user_id
user_items.flag_cannot_trade
price.price
items.price
items.banned
price.median
从可用的索引中可以清楚地看出,您缺少处理大型数据时所需的索引
您的表与列defindex
连接,它的唯一索引是price
所以,首先要在另外两个表上添加索引
alter table items add index defindex_idx(defindex);
alter table user_items add index defindex_idx(defindex);
现在您有了where条件
和order by
,优化器可以扫描更少的行,您需要添加更多的索引
alter table user_items add index uid_flag_idx(user_id,flag_cannot_trade);
alter table price add index price_idx(price);
alter table items add index price_idx(price);
alter table items add index banned_idx(banned);
alter table price add index median_idx(median);
确保在应用索引之前备份表
alter table user_items add index uid_flag_idx(user_id,flag_cannot_trade);
alter table price add index price_idx(price);
alter table items add index price_idx(price);
alter table items add index banned_idx(banned);
alter table price add index median_idx(median);
还可以在选择部分尝试price.median
。看起来您缺少索引,请对所有3个表运行show index on table_name
,并将它们共享到问题中。