胸罩哪个牌子性价比高:这句sql语句怎样优化?

来源:百度文库 编辑:高考问答 时间:2024/05/06 04:13:31
情况简介:
有两个表:dj和gl,
两个表有一个名称相同的字段:username,
username相同的,则是同一家公司的记录。

问题:下面这句要怎样优化,才能使运行时间最短?
sql="select top 10 dj.id,dj.username,dj.fbrq,dj.gsname from dj where dj.username =(select gl.username from gl where gl.username=dj.username and gl.s='3' and gl.qyname like '%A公司%'

请高手指教!
谢谢大家,

“经测试 charindex 要比 like 在每记录上快0.01%”
为什么我在实际使用中,用 like 的语句(加了一个top 1 之后速度提高倒是很明显)反而比用 charindex 的先出现结果呢?

还有什么高招,都使出来吧!

搜索语句要比模糊查找快
经测试 charindex 要比 like 在每记录上快0.01%

sql="select top 10 dj.id,dj.username,dj.fbrq,dj.gsname
from dj where dj.username =
(select top 1 gl.username from gl where gl.username=dj.username and gl.s='3' and charindex('A公司',gl.qyname)>0"

补充: 前缀like速度最快,查找其次,完全like速度最慢
'abc%' > charindex > '%abc%'
而返回记录数的多少则极大的影响速度

用INNER JOIN
sql="select top 10 dj.id,dj.username,dj.fbrq,dj.gsname from dj INNER JOIN gl ON gl.username = dj.username where gl.s='3' and gl.qyname like '%A公司%'

select top 10 dj.id,dj.username,dj.fbrq,dj.gsname from dj dj where dj.username=(select distinct gl.username from gl gl where gl.s='3' and gl.qyname like '%A公司%' )

连接查询算不算?
select top 10 dj.id,dj.username,dj.fbrg,dj.gsname from dj,gl where dj.username=gl.username and gl.s='3' and gl.qyname like '%A公司%'