建表語言(SQLSERVEL資料庫):create table [A]
(
[ID] int IDENTITY (1,1) PRIMARY KEY ,
[NAME] nVarChar(50) ,
[SEX] nVarChar(50) ,
)
A表上建立索引CREATE INDEX name
ON A (name)
插入:INSERT INTO A VALUES多條('ASD','1')和少量('QWE','1')
查詢陳述句:select * from A WHERE NAME LIKE REVERSE('EW%')
是否比select * from A WHERE NAME LIKE '%WE'
的效率高???
uj5u.com熱心網友回復:
LIKE REVERSE 理論上來說應該效率更低,這兩個陳述句最后查詢的應該都是 LIKE '%WE' , 都不會用到索引。
但是第一條查詢資料會多一個reverse的步驟,理論上來說會更慢
uj5u.com熱心網友回復:
REVERSE('EW%') 的結果是 '%WE', 也就是你兩個查詢的條件是完全一樣的,也就是你實際執行的陳述句完全一樣,這哪來的性能差異?uj5u.com熱心網友回復:
你可以在 set statistics profile on; 的情況下執行,對比兩者的執行計劃,可以明確看到沒區別select * from A WHERE NAME LIKE REVERSE('EW%')
|--Clustered Index Scan(OBJECT:([master].[dbo].[A].[PK__A__3214EC27716E3CF7]), WHERE:([master].[dbo].[A].[NAME] like N'%WE'))
select * from A WHERE NAME LIKE '%WE'
|--Clustered Index Scan(OBJECT:([master].[dbo].[A].[PK__A__3214EC27716E3CF7]), WHERE:([master].[dbo].[A].[NAME] like N'%WE'))
uj5u.com熱心網友回復:
用explainuj5u.com熱心網友回復:
感謝大家的回復,我意識到我陳述句寫錯了 查詢陳述句應該是select * from A WHERE REVERSE(NAME )LIKE 'EW%'這樣的效率在資料內容多的時候 應該效率高,不曉得是不是哈
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/86697.html
標籤:MySQL
上一篇:怎么合理建表,求助
