我有一個MEDIUMTEXT類型的列表。本表中有約15萬條記錄。MySql:用TEXT列查找空記錄非常慢
我試圖找到記錄,其中該字段爲空:
SELECT * FROM `q_tasks` WHERE `html`!='' limit 100
html
有MEDIUMTEXT型,並有串超過200 KB的長度。
這是非常緩慢的。我曾想過爲此專欄添加一個索引,但它會起作用嗎?我可以嘗試,但我有點害怕它實際上是什麼意思添加索引這種列。我的意思是我在一個DATETIME列中添加了一個索引(在同一張表中),它花費了很長時間並在我的磁盤上佔用了大約3GB。現在我只剩下約10 GB的可用空間:(
所以我有兩個問題,將添加一個索引來改善速度?又有多少千兆字節(約)將這個指標把我的磁盤上?
指標有其長度,你不能只是指數東西,即使你可以,它並不意味着如果你在某個東西上拋出一個索引,它會突然開始快速工作,你應該做的是計算文本列的散列(比如md5),添加一個存儲散列的列和列ñ。至於它需要多少空間 - 這是無關緊要的。數據庫只有在可以使用RAM時纔是快速的。當你的數據庫變成蝸牛時,你開始依賴於硬盤(比持久性更強)。 – 2014-10-16 14:43:01
謝謝。怎麼樣添加一個新的列,說「is_html_empty」 - 這將是0或1,然後索引該列?通過這種方式,我可以通過搜索此列來查找具有空'html'列的記錄。這是一個合理的想法? – Konrad 2014-10-16 14:51:56
不是。該索引將具有可怕的基數,並且無用,所以MySQL不會使用它。這意味着你可以添加這樣一個列,但不要索引它,因爲它不會有任何影響。 – 2014-10-16 14:53:44