【征询意见】两条SQL语句查询效率比较,那条更优解决方案

【征询意见】两条SQL语句查询效率比较,那条更优

1,

SQL code


  SELECT * FROM  news WHERE  TYPE IN (SELECT id FROM  classify WHERE type='2')

2,

SQL code


  SELECT n.* FROM news n,classify c WHERE c.id=n.type AND c.type='2'

最好能说个理由,今天同事们为了这两个语句辩论了整整一中午了噶

下班前结贴,谢谢大虾们赐教



explain出来

or

set profiling=1

show profiles

show profile for query 1;



效率无非指的是cpu消耗,内存消耗,io消耗,给我们最直观的感觉当然是执行时间

看这两个语句哪个执行快,就代表在当前服务器状态下哪个效率高




索引能否修改

在classify上建立id、type联合索引

news上建立type索引




据不完全的统计,第二种可能会更好。




探讨

据不完全的统计,第二种可能会更好。



贴建表及插入记录的SQL

实际上你自己测试 一下,看看执行时间就判断出来了




探讨

项目正在做,没有真实数据!很多人测试的结果都不一样,所以才发帖询问



这个问题无法直接下结论,要看具体的情况。

1. 索引的情况如何? 如果没有任何type上的索引,则理论上两个差不多。

2. 每个表中的数据情况,每个表中的记录总数是多少?如果两个表中都只有10条记录,则没什么差别,所有记录都可以在内存中搞定。



探讨

两个表都只有ID一个主键索引,其它什么索引都没有,也没有联合索引



没看懂第二个,n.id?? 一看还以为是C#还是Java的点操作


第二个效率应该要高点。。




学习~~~




我就得都不错,只是有些地方要改改




mark,我不凭感觉说话了。




要随前后文件改,可能第二个好一点。




长见识;啦




学习~~~




嗯不错很好啊!多多学习~~




两条语句是一样的。

你们公司没懂sql执行计划?

SQL code

SELECT n.* FROM news n,classify c WHERE c.id=n.type AND c.type='2'

SELECT * FROM  news WHERE  TYPE IN (SELECT id FROM  classify WHERE type='2')

SELECT * FROM  news n join classify c  on n.TYPE=c.ID where type='2'

SELECT * FROM  news n inner join classify c  on n.TYPE=c.ID where type='2'


in 用 EXISTS 改写,也是一样。

理论上一样
【征询意见】两条SQL语句查询效率比较,那条更优解决方案

相关文章:

你感兴趣的文章:

标签云: