作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 MySQl 数据库。
我知道如果我为列创建一个索引,使用该列索引从表中查询数据会很快。但是,我还有以下问题:
(假设我有一个名为cars的表,有一个名为country的列,并且我为country列创建了索引)
例如,我知道查询 SELECT * FROM cars WHERE country='japan'
将使用 country 列上的索引来快速查询数据。 !=
操作怎么样? SELECT * FROM cars WHERE country!='japan';
也会使用索引来查询数据吗?
WHERE ... IN ...
操作是否使用索引查询数据?例如 SELECT * FROM cars WHERE country IN ('japan','usa','sweden');
最佳答案
一般的回答是:视情况而定。这取决于数据库优化器认为什么是检索数据的最佳方式,它的决定可能需要数据的分布。
例如,如果你 99% 的行都有 country = 'japan',也许第一个查询 (=
) 不会使用索引,而是带有 !=
将使用它。
关于mysql - "WHERE ... IN ...", "WHERE ... != ..."查询索引问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8168624/
我是一名优秀的程序员,十分优秀!