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...
可以告诉我有更高效率的.语句么??
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...
可以告诉我有更高效率的.语句么??
字符的话在两个表id字段加索引
数字的话修改语句如下
select * from a, b where a.id = b.id and b.id between 10590 and 10599
都已经加索引了.
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'
你的select *出来有几个字段,会不会是显示出来的字段太多了?
太厉害了,电脑配置坑爹?
1G内存的XP普通电脑好像也不用5秒哦。
这句可以忽略索引的存与否在对性能的影响。10万数据如果用你的方法大概要2分钟,用这个大概1秒。我用sql server 的示例数据库测过了
1、建表
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
2、原查询
SELECT * FROM b1
JOIN b2 ON b2.blat2 LIKE b1.blat1 + '%'
3、改进后查询
SELECT *
FROM b1
JOIN b2 ON
LEFT(b2.blat2,5) = b1.blat1
1、建表
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
2、原查询
SELECT * FROM b1
JOIN b2 ON b2.blat2 LIKE b1.blat1 + '%'
3、改进后查询
SELECT *
FROM b1
JOIN b2 ON
LEFT(b2.blat2,5) = b1.blat1
on A.id=B.id where 自己加吧
与select * from A left join B on A.id=B.id where....两种方式的效率不一样吧.第二种应该快点