测验:索引
为什么 WHERE date(created_at) = '2026-07-26' 不能使用created_at索引?
- 由于在列上写入了函数,因此不能按原样使用索引的排序顺序。
- 不能为日期类型创建索引。
- 相等比较不使用索引。
- 因为统计数据是旧的
当存在复合索引(user_id、status、created_at)时,哪些条件不能用于索引搜索?
- 其中用户 ID = 1
- WHERE user_id = 1 AND status = '已付费'
- WHERE 状态=“已付费”
- WHERE user_id = 1 AND status = 'paid' ANDcreated_at >= '2026-01-01'
确定复合索引中列的顺序的正确原则是什么?
- 将等号条件列放在前面,将范围条件列放在后面。
- 始终将高选择性的色谱柱放在最后。
- 按字母顺序排列
- 将较小的类型放在前面
为什么在返还76%的情况下强行销毁索引反而会变慢?
- 因为索引已损坏
- 这是因为索引不能返回超过 100 行。
- 因为统计数据没有更新
- 这是因为每个匹配的行都会随机访问堆页,并且最终会以随机顺序读取整个表。
以下哪项不是部分索引(带有 WHERE 子句的索引)的优点?
- 所有与条件无关的查询都更快。
- 索引大小变小
- 不满足条件的行的INSERT和UPDATE不会触及该索引,减少写入成本。
- 您可以为同一列创建多个条件。
启用仅索引扫描需要什么?
- 表中必须只有一个索引
- 查询所需的所有列都必须包含在索引中。
- 索引必须是唯一的
- 表必须分区
添加索引时要考虑的最合适的成本是多少?
- 所有 SELECT 都很慢,因为它们要经过索引。
- 索引占用空间,减少表行数的上限。
- 更宽的锁定范围降低了事务隔离级别
- 每次插入和删除都必须更新所有索引,并且计划时间会增加。