rpmdeb 2019-10-25 16:21 采纳率: 0%
浏览 876

两个表inner join后 order by 两个字段排序,一个 ASC 一个DESC 查询很慢,改怎么优化?

A是小表 3000条,B是大表 50万条

CREATE TABLE A (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) NOT NULL,
  `creator` varchar(24) NOT NULL,
  `price` varchar(64) NOT NULL,
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `status` tinyint(1) not null,
  PRIMARY KEY (`id`)
);

CREATE TABLE B (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) NOT NULL,
  `pid` bigint(20) NOT NULL,
  `status` int not null,
  `type` varchar(12) NOT NULL DEFAULT '0',
  `quantity` int not null default 1,
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
);

有这样的一句sql

SELECT * FROM   A t1  INNER JOIN B t2 ON t2.pid = t1.id ORDER  BY t1.status ASC, t2.ctime DESC LIMIT  0, 30;

如果不用 t1.status 排序,速度会快很多,加上之后就变慢了,要3s 才能查出来,这样的sql 该怎么优化了?

  • 写回答

3条回答 默认 最新

  • 关注

    status字段为什么要对它进行排序呢?有意义吗?

    评论

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办