Mysql查询无法发送数据

Mysql查询无法发送数据,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项目

我的查询需要很长时间才能处理“发送数据”中的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项目。质量=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
,并将它们共享到问题中。