2014-10-10 72 views
1

我有我想要轉換爲SQL Server的以下腳本,但是如何?MySQL索引到SQL SErver

的MySQL:

CREATE TABLE mytable (
    id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    uri VARBINARY(1000), 
    INDEX(uri(100)) 
); 

請問這個指標看起來像MSSQL?

CREATE TABLE mytable (
    id INTEGER NOT NULL PRIMARY KEY IDENTITY(1,1), 
    uri VARBINARY(1000), 
    --INDEX ??? 
); 

回答

2

沒有在其create table語法內聯索引創建子句。但是,您可以事後做到這一點:

CREATE TABLE mytable (
    id INTEGER NOT NULL PRIMARY KEY IDENTITY(1,1), 
    uri VARBINARY(1000), 
); 

CREATE INDEX my_table_uri_ind ON mytable(uri); 

編輯:
爲了解決下面的評論,你可以使用computed columns獲得索引只有你uri的一部分的效果:

CREATE TABLE mytable (
    id INTEGER NOT NULL PRIMARY KEY IDENTITY(1,1), 
    uri VARBINARY(1000), 
    uri100 AS SUBSTRING (uri, 1, 100) 
); 

CREATE INDEX my_table_uri_ind ON mytable(uri100); 
+0

好。但是不可能以某種方式在mytable(uri(100))上執行CREATE INDEX my_table_uri_ind ?? – grmihel 2014-10-10 13:33:19

+0

@grmihel no。指數遍佈整個領域。和二進制指數 - 沒有。爲什麼認爲URI是varbinary的whover programemd開始? – TomTom 2014-10-10 13:38:46

+0

@TomTom我不知道。但是,由於它是在更大的系統上從MySQL映射到SQL,因此我試圖儘可能地將映射映射爲1:1。如果我索引uri和另一個var(如varchar int(100)),那麼索引將會太大...任何想法如何通過這個? – grmihel 2014-10-10 13:43:14