簡體   English   中英

MySQL-InnoDB為varchar編制索引或為多個varchar編制索引

[英]MySQL - InnoDB indexing varchar or indexing multiple varchars

大家好,我打算創建具有10列的表,該表應至少為10,000,000行,並且在其中,我將具有列description - VARCHAR(600)和其上的索引。

因此,問題是,在該列上查詢LIKE會更快(VARCHAR(600)),還是將描述分為100個字符的6列並用LIKEOR索引會更快。

例如: description - VARCHAR(600) INDEX

SELECT `id` FROM `table` WHERE `description` LIKE "%something%"

或者它會更快分裂description在6列像desc1desc2 ,.. desc6VARCHAR(100) INDEX -它們每一個和使用以下查詢:

SELECT `id` FROM `table` WHERE `desc1` LIKE "%something%" OR `desc1` LIKE "%something%" OR `desc3` LIKE "%something%" OR `desc4` LIKE "%something%" OR `desc5` LIKE "%something%" OR `desc6` LIKE "%something%"

在我開始創建數據庫之前就想知道。

最好的問候,並感謝大家!

根本沒有區別。 好,很少。 該查詢將必須進行全表掃描,因為like模式以通配符(“%”)開頭。

如果您關心性能,則可能應該將該問題重新表述為全文搜索。 文檔開始。

如果必須使用LIKE '%something%' (即,帶前導通配符的LIKE ),則

  • 一列。 (較少的工作比6所LIKEs ,加上ORs )。另外,你會怎么做有關something恰好是在兩個塊傳播的?
  • 該列上沒有索引(由於前導通配符,將不使用該索引)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM