use*_*265 1 mysql optimization
在加入情侣表期间的某个时候,我看到放置的条件标准在ON()子句中,有时在其中,意味着在WHERE之后.
在大量数据中,哪种方法更优化,更快?
什么会更快1.
SELECT a.column1, b.column2
FROM tablea a
JOIN tableb b
ON a.column3 = b.column3
WHERE b.column2='Y' AND a.column1='N'
Run Code Online (Sandbox Code Playgroud)
或者这个2.
SELECT a.column1, b.column2
FROM tablea a
JOIN tableb b
ON (a.column3 = b.column3 AND b.column2='Y')
WHERE a.column1='N'
Run Code Online (Sandbox Code Playgroud)
有两种加入方式:
1/SQL-89-style,使用逗号分隔的表和WHERE子句
例:
SELECT a.column1, b.column2
FROM tablea a, tableb b
WHERE a.column3 = b.column3
Run Code Online (Sandbox Code Playgroud)
2/SQL-92-style,使用该JOIN ... ON子句
例:
SELECT a.column1, b.column2
FROM tablea a
JOIN tableb b
ON a.column3 = b.column3
Run Code Online (Sandbox Code Playgroud)
在92风格更现代的并且是优选的,因为加入读取查询时,实际上是更加明显.你可以混合使用这两种风格,它会起作用,但这是一个糟糕的主意.
关于性能,我不能比Stackoverflow上现有的答案做得更好.我将引用它的要点:
根据Peter Gulutzan和Trudy Pelzer的"SQL性能调优",在他们测试的六个或八个RDBMS品牌中,SQL-89与SQL-92样式连接的优化或性能没有区别.可以假设大多数RDBMS引擎在优化或执行查询之前将语法转换为内部表示,因此人类可读的语法没有区别.
(强调我的)