mysql如何让视图利用索引?
mysql让视图查询命中索引需要where后面的条件必须要用索引的字段,如果是多个字段的联合索引,where条件必须按照联合索引从左到右的顺序查询才能命中索引,in和like 右%可以走索引,写好查询语句可以用explian命令查看索引命中情况。
在MySQL中,查看视图必须要有什么权限?
必须要有查看相应视图的权限。
举个例子,授予用户“viewer”查看mas-party视图的权限的SQL语句是:
图片来源:网络
GRANT SELECT, SHOW VIEW ON `mas-party`.`view` TO 'viewer'@'%'
MySQl中JOIN后面的子查询语句得到的结果叫做“视图”吗?
视图是存储在数据库中的查询的sql 语句,是一种可视化的虚拟表,其内容由查询定义,通过视图看到的数据只是存放在基本表中的数据。视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。
视图可以隐藏一些数据,比起真实的表相对安全;由于把涉及到多表联合的查询事先存储起来,使用的时候更加易于理解。
sql中把一个查询的结果当作另一个表来查询,这叫做临时表。“JOIN后面的子查询语句得到的结果”,这就是个临时表,而不能称为视图,虽然有和视图相同的特征,比如都是来自于真实表中的字段的查询结果,但其并不存在于数据库中,不能被重复使用。
视图和直接写SQL语句相比,在性能上速度相差不大,但VIEW毕竟是已经编译存放在数据库中,相对于直接SQL省去了语法检查和解析阶段的开销。当然查询快和慢终究还是要看业务实际情况,在使用索引的情况下,效率会得到很大的提升。