开发者社区> 问答> 正文

MySQL中SELECT *的一个问题

products 表有一个 actor 索引,title 无索引
SELECT * FROM products WHERE actor='SEAN CARREY'
AND title like '%APOLLO%';
上面的查询在MySQL中是
1.把表中所有行的所有数据都从存储引擎取到服务器再比较actor和title
还是只把所有行的所有actor和title从存储引擎取到服务器比较,再从存储引擎取出符合条件的行的所有数据

展开
收起
蛮大人123 2016-02-06 16:46:21 2301 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    products 表有一个 actor 索引,title 无索引。所以,以 InnoDB 为例,MYSQL 的读取顺序是:
    找到可用索引(actor 索引)。
    通过索引找到所有满足条件 actor='SEAN CARREY' 的聚簇索引,并得到一堆主键。
    从主键拿到具体行数据,比较 title 条件并返回满足条件的数据。

    2019-07-17 18:38:31
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像