日期:2014-05-16  浏览次数:20704 次

select 字段 from 与select * from速度差很多问题
大家好,我有个sql语句,一个select * 用了0.2秒, 一个是select 具体字段,居然用了7秒多,有人知道原因么?
第一个语句
SQL code


SELECT * 
FROM fa_product a
LEFT JOIN fa_view_borrow b ON a.id = b.fid
LEFT JOIN fa_return c ON b.id = c.bid
LIMIT 0 , 50


第二个语句

SQL code

SELECT a.id id, a.cname cname, a.pname pname, a.cno cno, a.csort csort, a.cxulie cxulie, a.pno pno, a.cperson cperson, a.qty qty, a.cstatus cstatus, a.bd_version bd_version, a.cnote cnote, a.addad4 addad4, a.addip addip, a.addtime addtime, a.lastupdatead4 lastupdatead4, a.lastupdateip lastupdateip, a.lastupdatetime lastupdatetime, a.boardstatus boardstatus, a.firmware_version firmware_version, a.bsp bsp, a.epld epld, a.sad4 sad4, a.sip sip, a.stime stime, a.project project, a.uboot uboot, a.bd_version bd_version, b.place place, b.cname bname
FROM fa_product a
LEFT JOIN fa_view_borrow b ON a.id = b.fid
LEFT JOIN fa_return c ON b.id = c.bid
ORDER BY id DESC 
LIMIT 0 , 50



大家帮忙看下原因会是哪些呢?


------解决方案--------------------
一般来讲select 具体字段要快一些,你的情况确实确实比较奇怪,
确认是这样吗?
怎样运行的,MYSQL什么版本,加入SQL_NO_CACHE 
SELECT SQL_NO_CACHE * from ....
看看结果
------解决方案--------------------
个人感觉应该是你第二个查询排序了的原因
------解决方案--------------------
你可以explain下
------解决方案--------------------
ORDER BY id DESC 

区别在于这一句吗
------解决方案--------------------
指定具体字段速度应该更快些
------解决方案--------------------
为fa_productd的id字段建立索引。
------解决方案--------------------
INDEX?
------解决方案--------------------
索引如何
在fa_product上建立ID索引
------解决方案--------------------
才多少记录不可能这么慢。

a id
bid
fid

这些都是主键吧?
表用的字符集都一样吗?

方便的话贴表的结构出来吧。
------解决方案--------------------
实行
EXPLAIN 你的 sql 指令
贴出结果,帮你分析

想你这样瞎猜是没有用的
------解决方案--------------------
fid、BID上建立索引没有