不可以,视图是一张虚表,并不真实存在在数据库中,所以也就没有什么主键、索引,因为根本就没有行和列,本质上就是语句,当你调用视图的时候数据库管理系统会先去找视图中封装的语句,先执行生成视图的语句,再在视图的基础上进行查询
create view dboview1(sno,sname,cname,grade)
with schemabinding
as select StudentSno,StudentSname,CourseCname,StudentCourseGrade
from
dboStudent join dboStudentCourse on StudentCourseSno=StudentSno
join dboCourse on CourseCno=StudentCourseCno
视图就是为了方便查看数据,比如说一个表有几千个字段,但常用的就那么十来个,我就可以把那十来个归集未一个视图,省得查询表要找来找去的麻烦,再比如说学生表和教师表,我要知道哪个学生是由那个教师教的,就要两个表关联起来看,为了方便我可以直接把他们做成一张视图,查询视图就都出来了。索引就相当于给数据打个编号,用来提高效率的,当然要用对才有效果。存储过程就是用来处理数据,事物等的一个逻辑集合,比如一个存储过程接收到一个参数用户出生时间20020601,但在表中要存注册时间,用户年龄,用户生日,就可以在存储过程中将注册时间:当前时间,用户年龄 :当前时间-出生时间,用户生日:截取月份和号数这些数据处理后再存入到表
索引当然是建在表上,索引是为了提高查询速度提供的一种方式,使用不当会有可能降低速度,索引建好了,当查询条件中where后面使用到的列名上有索引,数据库会自动使用索引
视图想当于一张虚拟表,因为通常习惯将多表连接查询的结果作为视图方便查询,视图里的数据是只读的,不能做增改删查,但可以通过触发器作到相同效果
1) mysql> show table status where comment='view'; (说明:Mysql51支持视图,视图被看作一种抽象表,因此显示视图状态的语句与显示表状态的语句相同,只是在comment列中以‘view’区分)2) mysql> select from information_schematables where table_schema='yourDatabaseName' and table_type='view';(说明:这种方法通过系统表查找,效果同上,显示信息更详细。如果不能正确显示结果,可能是大小写的问题,Mysql在不同系统平台不同配置参数下的显示结果可能不同,注意这点。)
在为视图创建索引前,视图本身必须满足以下条件:1、视图以及视图中引用的所有表都必须在同一数据库中,并具有同一个所有者。2、索引视图无需包含要供优化器使用的查询中引用的所有表。3、必须先为视图创建唯一群集索引,然后才可以创建其它索引。4、创建基表、视图和索引以及修改基表和视图中的数据时,必须正确设置某些 SET 选项(在本文档的后文中讨论)。另外,如果这些 SET 选项正确,查询优化器将不考虑索引视图。5、视图必须使用架构绑定创建,视图中引用的任何用户定义的函数必须使用 SCHEMABINDING 选项创建。6、另外,还要求有一定的磁盘空间来存放由索引视图定义的数据。
以上就是关于mysql 有视图索引吗全部的内容,包括:mysql 有视图索引吗、数据库编写创建视图 查询所有学生的学号,姓名,课程名,成绩 在视图中的“学号”列上创建一个非聚集索引、数据库中创建视图和索引还有存储过程起什么作用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)