两个查询语句
"SELECT COUNT(*) count1
FROM table1 t1
WHERE t1.id >= 20070625000000000000
AND t1.pid = '10'
AND t1.oper_id = '2177'"
"SELECT COUNT(*) count2
FROM table1 t1
WHERE t1.id >= 20070625000000000000
AND t1.telePhone = '88888888'"
对表table1 的索引才更合理更科学,理由是?
谢谢,
"SELECT COUNT(*) count1
FROM table1 t1
WHERE t1.id >= 20070625000000000000
AND t1.pid = '10'
AND t1.oper_id = '2177'"
"SELECT COUNT(*) count2
FROM table1 t1
WHERE t1.id >= 20070625000000000000
AND t1.telePhone = '88888888'"
对表table1 的索引才更合理更科学,理由是?
谢谢,
大資料的情況如果單純為了這兩個語句的執行效率,可以建兩個Index
index1:id,pid,oper_id
index2:id,telePhone
此外要根據平時有哪些常用的語句來建
一般index數量不要超過子段數的20%效能比較好
建议考虑三个字段哪个字段变化大,哪个字段变化小,
如果id指的是流水号,通常流水号都是唯一的,也就是与其它记录相异,
即使建index也index也会较大,可以考虑相异值更小一点的,
由语句还是建pid,oper_id为好,个人意见,尽供参考.
如果t1.pid = '10' 返回的数据量比较大也不适合建索引oracle的优化是基于成本的,有时候数据量的不同,或者你检索出来数据量的不同都会影响oracle的优化方案.看样子id应该是主键,不用建索引,如果是我的话再把经常查询的列建一个索引,再针对具体的查询情况再调整查询语句,例如,强制使用某个列的索引.