SQL 选择比较列与比较列与值

时间:2021-04-20 08:31:18

标签: sql oracle performance

我有一个包含字段的表格:

long id;
String field1;
String field2;
String status1;
String status2;
Boolean compareResult;

status1status2 有一些特定的值(枚举)。 compareStatus 如果 true==status1status2,否则为 false。以上 3 个字段均已编入索引。假设我的表有大约 100 万条记录,字段 compareResult 对需要查找具有不同状态的所有记录的业务有帮助吗?我的意思是在 select * where status1=status2select * where compareResult=true 之间哪个更好?

1 个答案:

答案 0 :(得分:1)

status1status2 上的索引不用于 select * where status1=status2。因此执行了完整扫描。

但是索引 compareResult 用于 select * where compareResult='TRUE'。所以使用第二个查询可能会更快。

但是,取决于您的实际机器(IO 和 CPU 速度、RAM 量等)以及行数是否会随着时间的推移而增加,嗯。 我建议使用或多或少的真实数据进行一些快速测试,看看服务器的性能如何。

提示: 由于 compareResult 将只包含两个不同的值('TRUE''FALSE'01 或任何用于表示布尔值的值),您可以使用创建索引时的 COMPRESS 子句。