首页 > 试题广场 >

现有数据库表t_order,主键为Forder_id,并在表

[单选题]
现有数据库表t_order,主键为Forder_id,并在表的Fuin、Fstate、Fcreate、ime建立复合索引,下列选项中能使索引的是(    )
  • select Fmerchant_id,Fuin FROM t_order WHERE Forder_id=’27000022016041412037866’;
  • select Fmerchant_id,Forder_id FROM t_order WHERE Fuin=’42176034’ AND Fstate=1;
  • select Fmerchant_id,Fuin,Fstate FROM t_order WHERE Forder_id LIKE ‘%20160414%’;
  • select Fmerchant_id,Famount FROM t_order WHERE Forder_id=’27000022016041412037866’ OR Fuin=’42176034’;
a也对
发表于 2019-03-27 21:26:29 回复(3)
个人认为应该选B。题干是表的Fuin、Fstate、Fcreate、ime建立复合索引,所以只用看选项的where子句。复合索引的列的顺序对查询是有很大影响的,例如建立索引:(姓, 名),在索引文件中,它会先按照姓排序,在姓相同时,再按照名排序,而单独查询名或者先查询名是不会使用到索引的。据此已经能把ACD排除。答案选C是不合理的,模糊搜索like能使用XXX%可以用到索引,但%XXX%肯定是不能用到索引的。
索引的使用限制场合:
1、使用不等于操作符(<>, !=)
2、使用 is null 或 is not null
3、使用函数
4、比较不匹配的数据类型
编辑于 2017-08-23 20:12:21 回复(5)
主键不是会自动建立索引吗
发表于 2017-09-01 21:57:17 回复(9)
全值匹配最喜欢,最左前缀规矩严
带头大哥不能死,中间兄弟不能断
Like百分最右边,覆盖索引*不见
不等控制还有OR , 你建索引也失效
VAR引号要出现,SQL高级也不难
发表于 2021-09-06 01:07:35 回复(1)
复合索引可以只使用索引的一部分,但是必须是从最左端开始。个人认为是这个原因。所以选B的。
发表于 2021-03-10 21:55:06 回复(0)
索引的使用限制场合:
1、使用不等于操作符(<>, !=)
2、使用 is null 或 is not null
3、使用函数
4、比较不匹配的数据类型
发表于 2021-07-21 20:03:35 回复(0)
模糊查找的 会失效
or 的也会失效
!和<> 也会失效
发表于 2022-04-22 16:16:04 回复(1)

复合索引是由多个列组成的索引,对于索引的效率,查询条件的列顺序非常重要。在这里,复合索引包含了Fuin、Fstate、Fcreate_time这三个列。

让我们分析每个查询选项:

A. 查询条件只涉及Forder_id列,没有使用索引中的其他列,所以这个查询不会充分利用复合索引。

B. 查询条件涉及Fuin和Fstate列,这两列包含在索引中,但查询没有涉及索引中的Fcreate_time列。这个查询可以充分利用索引。

C. 查询条件涉及Forder_id列,但是使用了LIKE操作符来进行模糊匹配,通常这种情况下索引的效率会下降,因为不是直接精确匹配。

D. 查询条件涉及Forder_id和Fuin列,但使用了OR操作符,这也可能导致索引的效率下降。

发表于 2023-10-16 14:32:12 回复(0)
引用58沈剑大佬的总结 (1)MyISAM的索引与数据分开存储,索引叶子存储指针,主键索引与普通索引无太大区别; (2)InnoDB的聚集索引和数据行统一存储,聚集索引存储数据行本身,普通索引存储主键; (3)InnoDB不建议使用太长字段作为PK(此时可以加入一个自增键PK),MyISAM则无所谓;
发表于 2022-11-24 00:02:59 回复(0)
索引的使用限制场合: 1、使用不等于操作符(<>, !=) 2、使用 is null 或 is not null 3、使用函数 4、比较不匹配的数据类型 补充一个模糊查询'%x%'也不能用,只有'x%'可以用 而且该题目复合索引里没有的东西比如主键是不能用索引的
发表于 2021-06-06 11:01:35 回复(1)
能使用索引,选C???,不对吧。C是肯定不会用索引的
发表于 2017-08-16 19:27:29 回复(4)