逻辑查询优化
关系代数等价变化规则
关系代数表达式的等价,也就是说相同的关系。代替两个表达式中相映的关系,所得到的结果是相同的。
1、运算符的角度考虑优化
不同的运算符有不同的特点,应该根据不同的查询使用。
-- 表中“合取”的意思是:可以使用一个等式完成条件,如果有下列sql:
SELECT * FROM test1,test2,test3 where test1.id = test2.id and test2.id = test3.id
-- 上面的sql可以优化为:
SELECT * FROM test1,test2,test3 where test1.id = test2.id = test3.id
-- 表中“析取”的意思是:如果各自有索引,且为并集的关系,那么可以使用各自的索引,最后进行合并。
SELECT * FROM `test1` where test1.id = 1 or test1.num > 3
-- 可以优化为:
SELECT * FROM `test1` where test1.id = 1 UNION SELECT * FROM `test1` where test1.num > 3