比方說,我有表my_table(id int not null primary key, datafield varchar(100))
。查詢 SELECT * from my_table where id = 100
執行索引查找。如果我將其更改爲有沒有可以優化以下查詢的數據庫服務器?
SELECT * from my_table where id+1 = 101
它掃描整個索引(索引掃描)(至少它在SQL Server和Mysql中執行)。有沒有「理解」id +1 = 101
與id = 101-1
相同的數據庫服務器?我意識到這不是一個典型的數據庫操作,並且服務器在這種情況下不需要執行任何數學操作,但是我想知道它是否在任何地方實現?
感謝
UPDATE
到目前爲止,我已經試過SQL Server 2008企業版,MySQL 5.1中,5.5。 SQL Server分別顯示聚簇索引查找和聚簇索引掃描。 Mysql explain
顯示ref:const, key:primary, rows:1
和ref:null, key:null,rows: #total number of rows in the table
是你能肯定,只要用SQL 2008 R2和測試這兩種情況只做索引查找,而不是表掃描,你嘗試過哪些版本它與? – 2011-02-25 18:51:10
@ K Ivanov:我剛剛嘗試過一次:1.Clustered index seek; 2.聚簇索引掃描。對不起,在我的問題中,它應該說「掃描整個索引」而不是「整個表」。我會改變它。 +1指向它 – a1ex07 2011-02-25 19:01:53