作者回复: 索引是个前提,其实和选择与否 还是要看表的大小。选择的标准,你可以理解为: 小表驱动大表。这种方式下效率是最高的。比如
SELECT * FROM A WHERE cc IN (SELECT cc FROM B)
SELECT * FROM A WHERE EXIST (SELECT cc FROM B WHERE B.cc=A.cc)
当A小于B时,用EXIST。因为EXIST的实现,相当于外表循环,实现的逻辑类似于:
for i in A
for j in B
if j.cc == i.cc then ...
当B小于A时,用IN,因为实现的逻辑类似于:
for i in B
for j in A
if j.cc == i.cc then ...
所以哪个表小就用哪个表来驱动,A表小 就用EXIST,B表小 就用IN
作者回复: Good Job 总结的不错
作者回复: 后面有些内容是和SQL优化相关的,前面相对基础
作者回复: 总结的不错!
作者回复: 第一个SQL 18条记录
第二个SQL 19条记录
作者回复: 正确,而且SQL代码结构清晰
作者回复: 是因为这些player在player_score中都有记录,player这张表的数据量有些少,如果数据量大的话,没有在player_score(即没有打过比赛的球员)是不会显示出来的
作者回复: 整理和分析的不错