日期:2014-05-18  浏览次数:20545 次

求一条SQL 语句..效率最高
A中有
ID 联系人 
10591 a  
10592 b
10593 c
10594 d
10600 e  

B中有
ID 联系方式 
10591 138....
10593 139....
10594 138....
10595 138....
10600 150....

select * from a, b where a.id = b.id and b.id like '10459%'

得到结果 
ID 联系人 联系方式
10591 a 138...
10593 b 139...
10594 d 138...
可以告诉我有更高效率的.语句么??

------解决方案--------------------
探讨
900多条数据..只是执行select * from a, b where a.id = b.id就得用5秒左右..不能再快点么??ID我已经加索引了

------解决方案--------------------
索引改一下
CREATE NONCLUSTERED INDEX NIX_1 ON A(ID) INCLUDE (联系人)
CREATE NONCLUSTERED INDEX NIX_2 ON B(ID) INCLUDE (联系方式)

语句把*改成ID,联系人,联系方式
SELECT ID,联系人,联系方式
FROM A INNER JOIN B ON a.id = b.id and b.id >= '10459' and b.id < '10460'
------解决方案--------------------
探讨
900多条数据..只是执行select * from a, b where a.id = b.id就得用5秒左右..不能再快点么??ID我已经加索引了

------解决方案--------------------
为了说明,我把代码贴出来,你可以自己弄个示例数据库试试
1、建表
SQL code
USE TempDB
GO
CREATE TABLE b1 (blat1 nCHAR(5) NOT NULL)
CREATE TABLE b2 (blat2 VARCHAR(200) NOT NULL)
GO
INSERT b1
SELECT LEFT(AddressLine1, 5) AS blat1 FROM AdventureWorks.Person.Address
INSERT b2
SELECT AddressLine1 AS blat2
FROM AdventureWorks.Person.Address
GO