暂无图片
mysql谓词下推问题
我来答
分享
黄伟波
2020-05-18
mysql谓词下推问题
暂无图片 5M

create view v1 as select distinct id from t where name=‘xxx’;

–不走索引
select * from v1 where id=1;

–走索引
select distinct id from id where name=‘xxx’ and id=1;

问题:一些比较复杂的视图这样去查是不走索引,直接全表扫描,请教下这类问题应如何解决?

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
Cui Hulong
  1. show create table t;看看索引是设置在哪里的。
  2. explain 命令可以看到是否走索引
  3. 返回的数据 操作28%以上,就会走全表扫描。这个具体要看。
暂无图片 评论
暂无图片 有用 0
打赏 0
黄伟波

没,放在视图里面就不会走了,mysql不能在视图上建索引,如果是Oracle就会走索引

暂无图片 评论
暂无图片 有用 0
打赏 0
test

如果不要求实时性,可以写存储过程,创建临时表,提前准备好数据

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
mysql 5.7 要创建 myisam 类型的表, 需要怎么创建?
回答 2
已采纳
showcreatetablekeweitest110\G1.rowTable:keweitest110CreateTable:CREATETABLEkeweitest110(idint(2)NOTN
MYSQL满日志中有大量的commit;怎么优化?
回答 1
已采纳
慢查询日志中出现commit,就是因为事务提交(commit)的时间过长,可能有下面一些原因: 1:磁盘IO过载时或者发生故障的时候,因此在事务完成时进行刷新(flush)需要很长时间。&n
MySQL8如何修改库名?
回答 2
已采纳
首先:不管存储引擎是InnoDB还是MyISAM直接去修改data下的文件夹名称都是不可行的。renamedatabaseoldnameTOnewname;也是不可行的。可采取的方法:方法一:新建数据
MySQL 在字符串列创建索引的时候 只对字符串的前几个列进行索引 这个对等值查询 范围查询 影响大吗?
回答 2
你应该说的是对该字段的前几个字符创建索引吧,这是叫前缀索引。使用前缀索引能有效的减小索引文件的大小,让每个索引页可以保存更多的索引值,从而提高了索引查询的速度。你说对查询影响打吗,这一点跟普通二级索引
请教一下各位:用ogg把表从oracle同步到mysql,如果在初始化完成之后,表数据就发生变化了,而此时用于捕获增量数据的ext进程还没有启动,那这部分变化数据岂不是没抓取到?……
回答 1
已采纳
都是先配置好抽取进程再初始化吧?
mysql物理备份可以跨版本恢复吗?
回答 2
不可以
mysql实现日期时间戳
回答 1
selectDATEFORMAT(NOW(),’%Y%m%d%H%i%s%f’);
MySQL 怎么避免间隙锁产生死锁的问题?
回答 3
改成RC吧,你说的那种需要RR隔离基本的场景很少吧,没有什么是RC解决不了的。
Linux mysql 日志为什么写进去数据 没有 at 节点 ,但可以看到 SQL 语句?
回答 1
是不是读取大型表或执行非常频繁的查询等情况下?如果是的话,那么这些操作可能会导致生成大量的日志数据,影响性能。在这种情况下,MySQL服务器可能会选择跳过一些日志记录来提高性能。
MySQL数据库能去重吗?
回答 2
selectdistinctconcat(id,name)fromt;但是要注意在约束不为notnull的列上面加上ifnull