12、数据库索引与空值处理的实用指南

数据库索引与NULL处理指南

数据库索引与空值处理的实用指南

1. 低选择性索引

选择性是数据库索引的一个统计指标,它是索引中不同值的数量与表中总行数的比率,计算公式如下:

SELECT COUNT(DISTINCT status) / COUNT(status) AS selectivity FROM Bugs;

选择性比率越低,索引的效果就越差。可以用一个类比来理解,就像一本书的索引,如果一个词在书中频繁出现,索引可能会列出很多页码,为了找到所需内容,你不得不逐页查找。同样,在数据库索引中,如果一个值在表的许多行中出现,读取索引可能比直接扫描整个表更麻烦,甚至使用该索引的成本可能更高。理想情况下,数据库会跟踪索引的选择性,不会使用没有益处的索引。

例如,在以下查询中:

SELECT * FROM Bugs WHERE description LIKE '%crash%';

由于搜索谓词中的模式可能出现在字符串的任何位置,排序的索引数据结构无法提供帮助。

2. 索引霰弹枪反模式的识别

索引霰弹枪反模式有以下几种症状:
- “这是我的查询,如何让它更快?”:这是最常见的 SQL 问题,但缺少表描述、索引、数据量以及性能和优化测量等细节,没有这些上下文,任何答案都只是猜测。
- “我在每个字段上都定义了索引,为什么还是不快?”:这是典型的索引霰弹枪反解决方案,你尝试了所有可能的索引,但却是在盲目尝试。
- “我听说索引会使数据库变慢,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值