前言:
现时姐妹们对“mysql条件索引”大概比较着重,你们都需要知道一些“mysql条件索引”的相关内容。那么小编同时在网络上收集了一些对于“mysql条件索引””的相关资讯,希望朋友们能喜欢,咱们快快来学习一下吧!1、MySQL数据库四种特性,不包括(B)
A.原子性
B.事务性
C.一致性
D.隔离性
解释:事物的四种特性ACID,即:原子性、一致性、隔离性、持久性
2、MySQL报错error 1062 的意思是(B)
A.连接数据库失败,没有连接数据库的权限
B.字段值重复,入库失败
C.未定义用户对数据表的访问权限
D.删除数据库文件失败
解释:error 1062是最容易遇到的错误,即主键冲突引起的从库复制中断
3、MySQL主从架构如下:
主库 从库
192.169.1.1 192.168.1.2
需要在从库上采用mysqldump备份并记录主库binlog、Position点,需要加哪个参数(不考虑其他参数) (C)
A.--master-date
B.--single-transaction
C.--dump-slave
D.--opt
解释:如果在从库备份并记录主库位点,需要加--dump-slave参数,一般添加新从库时使用,但需要注意此参数会引起备份的从库复制断开。
4、以下哪个不能有效减小从库延迟时间(C)
A.主库进行update操作时where后条件没有索引,添加索引
B.主库有大事物,增加缓存,异步写入数据库,减少直接对db的大量写入
C.主库并发更新写入频繁,从库设置innodb_flush_log_at_trx_commit=1及sync_binlog=1
D.数据库中存在大量myisam表,修改表结构为innodb存储引擎的表
解释:主库并发更新写入频繁,从库设置这两个参数0、0或者2、0;
innodb_flush_log_at_trx_commit=0 每秒将log_buffer刷新到logfile,并且将日志同步刷新到磁盘。该模式下,在事务提交的时候,不会主动触发写入磁盘的操作;
innodb_flush_log_at_trx_commit=1 每次commit将log_buffer刷新到logfile,并且将日志同步刷新到磁盘;
innodb_flush_log_at_trx_commit=2 每次commit将刷新到log_buffer,但是flush(刷到磁盘)操作并不会同时进行,每秒将日志刷新到磁盘;
sync_binlog=0 像操作系统刷其他文件的机制一样,MySQL不会同步到磁盘中去而是依赖操作系统来刷新binary log。
sync_binlog=1 MySQL在每写N次二进制日志binary log时,会使用fdatasync()函数将它的写二进制日志binary log同步到磁盘中去。如果启用了autocommit,那么每一个语句statement就会有一次写操作;否则每个事务对应一个写操作。
5、表test(a int,b int,time date)涉及以下3条sql:
select * from test where a=1 and b=1;
select * from test where b=1;
select * from test where b=1 order by time desc;
只建一个索引,如何建最优(D)
A.idx_ab(a,b)
B.idx_ba(b,a)
C.idx_abtime(a,b,time)
D.idx_btime(b,time)
解释:在有oracle by排序时,排序字段必须要有索引,第一条sql创建idx_ab(a,b)最优,但是第二条sql用不到,而idx_ba(b,a)索引排序用不到,综上idx_btime(b,time)最优
6、MySQL中InnoDB引擎的行锁是通过加在什么上完成(或称实现)的:(B)
A.数据块
B.索引值
解释:索引值,行级锁锁的是这条记录
7、关于MySQL权限说法正确的是(A)
A.管理权限(如super, process, file等)不能够指定某个数据库,on后面必须跟 *.*
B.如需要truncate权限只需授予drop权限
C.super权限允许用户终止任何查询,但不允许修改全局变量的set语句
D.建立一个用户时,需要单独授予usage连接权限
解释:truncate权限需要create和drop权限;super权限允许用户终止任何查询;修改全局变量的SET语句建立一个用户,就会自动授予其usage权限(默认授予),无需再单独授予。
8、关于select count(*)和select count(1)以及select count(column)区别,说法错误的是(C)
A.如果表沒有主键, 那么count(1)比count(*)快
B.如果表有主键,那主键作为count的条件时候count(主键)最快
C.如果表没有主键,只有一个column的话,那count(column)最快
D.count(*)跟count(1)的结果一样,都包括对NULL的统计,而count(column)是不包括NULL的统计
解释:如果表没有主键,只有一个column的话,那count(*)最快
9、使用SQL语句进行分组检索时,为了去掉不满足条件的分组,应当(B)
A.使用WHERE子句
B.在GROUP BY后面使用HAVING子句
C.先使用WHERE子句,再使用HAVING子句
D.先使用HAVING子句,再使用WHERE子句
解释:GROUP BY HAVING分组后过滤固定格式
10、关于SQL优化,以下说明哪个是错误的(B)
A.类似分页功能的SQL,建议先用主键关联,然后返回结果集,效率会高很多
B.通常情况下,join的性能比较差,建议改造成子查询写法
C.多表联接查询时,关联字段类型尽量一致,并且都要有索引
D.尽可能不使用TEXT/BLOB类型,确实需要的话,建议拆分到子表中,不要和主表放在一起,避免SELECT* 的时候读性能太差
解释:具体SQL具体分析,不一定join就比子查询快
11、Linux操作系统下,关于MySQL大写小问题正确的是(D)
A.column(包括别名)、index、storedroutine和event names的大小写敏感
B.database、table(包括别名)的大小写敏感性可以通过系统参数“lower_case_table_names”来配置,等于1时大小写敏感
C.trigger、identifiers(标识符)的大小写敏感性受lower_case_table_names参数影响
D.数据敏感性:校对字符集(Collation)可通过show collation查看,其中“_ci”代表case-insensitive大小写不敏感,“_cs”代表case-sensitive大小写敏感,“_bin”的大小写敏感依赖于character的二进制编码
解释:column(包括别名)、index、storedroutine和event names不区分大小写;lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候是不区分大小写;.trigger、identifiers(标识符)的大小写敏感性不受lower_case_table_names参数影响
12、MySQL delete from table where后哪项操作不会释放磁盘物理空间(D)
A.optimize table tablename;
B.alter table tablename add column ;
C.alter table tablename engine=innodb;
D.rename table tablename to tablename_new;
解释:前3个都会in-place数据,重新插入数据,从而达到释放碎片的目的,第四个只是修改元数据
13、MySQL在RR事物隔离级别下,更新条件为索引字段,并非唯一索引(包括主键索引)时,会通过Next-Key Lock解决幻读问题。以下哪项不会加此锁(A)
A.inser into…
B.select… from… for update;
C.update…from… where
D.insert into T select … from S where…;
解释:inser into…只加行级锁
14、MySQLSleep线程过多,以下操作不正确的是(D)
A.设置interactive_timeout参数,减小wait_timeout等待超时时间
B.php程序不要使用长连接,java程序调整连接池
C.打开mysql慢查询
D.检查应用连接情况,增加连接数
解释:Sleep线程过多,主要是程序没有发送请求,可以缩短空闲超时时间,也可以从程序端配置间隔探活,而增加连接数不会从根本达到优化效果
15、表结构如下:
CREATE TABLE `test` (
`id`int(11) NOT NULL AUTO_INCREMENT,
`uid`int(11) DEFAULT NULL,
`name`char(20) DEFAULT '0' NOT NULL,
`phone` int(11) DEFAULT NULL,
`email`varchar(20) DEFAULT NULL,
PRIMARYKEY (`id`),
KEY`idx_name` (`name`(5)),
KEY`idx_phone` (`phone`),
KEY`idx_email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULTCHARSET=utf8;
请问idx_name、idx_phone及idx_email索引长度分别是多少 (B)
A.15,4,62
B.15,5,63
C.16,4,62
D.16,5,63
解释:utf8占3个字节,null占一个字节,not null不占用字节,int固定占用4个字节,变长字段需要记录长度占用2个字节。
idx_name(`name`(5)) 虽然name(5)只对前5个字符加索引 5*3 总共15;
idx_phone(`phone`) int固定4个字节,NULL占一个字节,总共5;
idx_email (`email`) varchar(20) *3,NULL占一个字节,变长字段需要记录长度占用2个字节,总共63
标签: #mysql条件索引 #oracle排序字段索引吗 #php取单选值