2011-02-06 87 views

回答

3

可能是肯定的,除非

  • 表有很少的行(< 1000)
  • 的int的列有選擇性較差
  • 正在返回的表大比例(比如> 1% )

在這種情況下,表掃描可能會更有意義,優化器可能會選擇做一個。在大多數情況下,索引無論如何不是非常有害的,但是您應該嘗試一下並看到(在您的實驗室中,使用類似於生產的數據集的生產級硬件)

2

是的。不管列的數據類型如何。如果您沒有指定索引,則只要您在該列中搜索值,mysql就必須掃描整個表。

+0

也許不是布爾值就我而言知情。例如。看到這個:http://stackoverflow.com/questions/10524651/is-there-any-performance-gain-in-indexing-a-boolean-field – dennis 2015-02-02 10:11:38

4

是的,任何列上的索引都可以使查詢執行得更快,而不管數據類型如何。數據本身至關重要 - 如果系統中只有兩個值,那麼使用索引是沒有意義的。

另外要注意的是:

  • 索引的存在並不能確保這些信息將用於 - 表統計需要是當前的,但它確實取決於查詢。
  • MySQL也只允許每個SELECT一個索引,並且索引的空間有限(limit dependent on engine)。
+0

+1:額外的信息:) – shamittomar 2011-02-06 21:31:12

0

是的,索引上的全部要點是您可以通過primary key創建它們或者通過添加indexy manualy。列的類型沒有提及任何關於查詢速度的信息。

0

是的,它必須被索引。如果索引tinyint用作布爾值,則沒有意義,因爲此索引不夠有選擇性。