2011-12-04 68 views
1

我正在使用MySQL v5.1。CREATE INDEX的條件是?

我想通過執行下面的SQL語句在表上創建索引:

CREATE INDEX index_name 
ON table_name (column_name) 

但是,我婉若在該列的索引已經創建與否,如果不首先檢查,創建它(否則不要創建)。這是什麼SQL語法?

回答

1

Mysql沒有IF NOT EXISTS對於CREATE INDEX。你可以通過查詢information_schema.statistics表來解決這個問題。看看here,有一個存儲過程的例子,它可以做你正在尋找的東西(在頁面上搜索「CREATE INDEX IF NOT EXISTS」)

+0

嗯,是的,我知道MySQL沒有「IF NOT EXISTS」作爲「CREATE INDEX」,我正在尋求解決方法,這就是爲什麼我在這裏發佈我的問題。但是,謝謝你的建議,我會看看。 – Mellon

+0

@Mellon,您可能會在'create_index_if_not_exists'存儲過程中爲您找到該文章。它看起來像更多的工作,但我認爲它會做的伎倆;只是不是一個單行:( – Nonym

0

您想要SHOW INDEX

要獲得一個表的所有索引:

SHOW INDEX FROM table_name 

MySQL允許你添加一個WHERE子句限制的結果也是如此。

在檢查索引是否存在時(以及索引是否不存在,創建索引)鎖定表,以便在檢查後另一個進程不會創建索引但是在你自己創造之前。

+0

不,你沒有明確我的觀點。我想要一個SQL語句來做類似於「CREATE INDEX idx_name on table_name(col_name)IF IFx_name on col_name is not created」的東西我該如何在純SQL語句中檢查並相應地創建它?不僅顯示索引。那麼,顯示索引是一個好的開始,但它並沒有完成我想要的東西。 – Mellon

相關問題