表中有一列作爲category_NAME/ID,我們可以在其中傳遞id,併爲該類別的列表創建另一個表或直接添加類別名稱。在mysql字符串搜索或整數與join語句的組合中,哪個更快?
哪一個是fater
案例1:
TABLE1
ID | CATEGORY_NAME
CASE 2
這裏獲取列表中,我們有一個做陳述JOIN
TABLE1
ID | CATEGORY_ID
CATEGORY_TABLE
ID | CATEGORY NAME
表中有一列作爲category_NAME/ID,我們可以在其中傳遞id,併爲該類別的列表創建另一個表或直接添加類別名稱。在mysql字符串搜索或整數與join語句的組合中,哪個更快?
哪一個是fater
案例1:
TABLE1
ID | CATEGORY_NAME
CASE 2
這裏獲取列表中,我們有一個做陳述JOIN
TABLE1
ID | CATEGORY_ID
CATEGORY_TABLE
ID | CATEGORY NAME
是什麼 CASE 1之間的區別: TABLE1
ID | CATEGORY_NAME
CASE 2
這裏獲取列表,我們做一個JOIN語句
TABLE1
ID | CATEGORY_ID
CATEGORY_TABLE
ID | CATEGORY NAME
我想你的意思是第一種情況是Item_id。
在這種情況下,它取決於代碼的可維護性和存儲。就好像類別名稱已更改一樣,您必須更新大表中的記錄,這將是大量查詢。 另外,由於您正在存儲category_id而不是其名稱,因此將有助於節省存儲空間。由於您不是複製每個記錄的類別名稱,而只是引用category_id。
但顯然它取決於項目的類別和大小的大小。
如果TABLE1規模是相當小的(比方說小於10K行最大),索引VARCHAR CATEGORY_NAME應該工作正常,否則最好使用一個單獨的表,用於存儲類別。
就我個人而言,我會選擇2.在這裏的性能改進不會如此顯着,但將字典字段存儲在另一個表中是一種不好的做法。
您的測試結果如何?您需要考慮數據庫和相關代碼的可維護性,例如,如果類別名稱被更改,會有多少麻煩? –