2012-12-26 32 views
0

道歉,如果這是多餘的,它可能是,我看了一下,但在這裏找不到一個問題,我想知道什麼。MySQL上的LIKE查詢有多慢? (自定義字段相關)

基本上我們有一張約有50000行的表格,預計它會比這個表格大得多。我們需要允許管理員用戶根據自己的類別將自定義數據添加到項目中,用戶可以選擇要添加信息的管理員定義的字段。

起初,我已經走了有item_categories_fields表從item_fields到item_categories對的條目,那麼管理員可以添加自定義字段並重新使用它們跨類別的一致性。 item_fields與item_field_values有關係,它將值與字段鏈接起來,這就是我們在.NET中處理事物的方式。該項目雖然使用CAKEPHP,但我們只是隨時瞭解情況,所以有時可能會有點煩人。

我想不過的也許只是增加一個item_custom_fields表基本上是ITEM_ID和存儲XMLish格式數據的文本字段。這只是爲了自定義字段的值。

如果我想通過它的ID作爲所需的數據存儲在項目表中,但如果我想要做基於自定義字段中輸入搜索什麼,以獲取項目沒有問題?將一個

SELECT * FROM item_custom_fields 
WHERE custom_data LIKE '%<material>Plastic</material>%' 

(用戶輸入相關的問題放在一邊)是實際的,如果我想取在這種情況下,由塑料製成的物品?就像那樣慢?

謝謝。

編輯:我真的很擔心這個事情在推出時會有大約40萬行,謝謝你們。

+0

它可以變得非常緩慢。速度有多慢取決於您的硬件,軟件,表格大小,字段長度......您建議的初始結構將比文本字段快得多。 – Popnoodles

+0

看一下Sphinx搜索引擎 – nkamm

+0

正如一些人所認爲的那樣,用於「輔助用戶可擴展數據」的EAV模型可能是一個可行的選擇,更復雜的動態列和元數據映射方法(即SharePoint) 。當然,如果這是SQL Server,那麼分解XML不會是一個問題..但事實並非如此。 – 2012-12-26 08:05:18

回答

1

任何LIKE查詢與%開始不會用你對列的任何索引,所以查詢將掃描整個表找到結果。

響應時間很大程度上取決於您的機器和桌子的大小,但它絕對不會在任何形狀或形式上有效。

您以前的/現有的解決方案(如果索引良好)應該快得多。