我有一個表「交易」有600萬條記錄在mysql中通過列整數或列字符串搜索更快嗎?
id trx secret_string (varchar(50)) secret_id (int(2.))
1 80 52987624f7cb03c61d403b7c68502fb0 1
2 28 52987624f7cb03c61d403b7c68502fb0 1
3 55 8502fb052987624f61d403b7c67cb03c 2
4 61 52987624f7cb03c61d403b7c68502fb0 1
5 39 8502fb052987624f61d403b7c67cb03c 2
..
999997 27 8502fb052987624f61d403b7c67cb03c 2
999998 94 8502fb052987624f61d403b7c67cb03c 2
999999 40 52987624f7cb03c61d403b7c68502fb0 1
1000000 35 8502fb052987624f61d403b7c67cb03c 2
正如你可以看到,secret_string
和secret_id
會始終保持一致。
比方說,我需要選擇secret_string = "52987624f7cb03c61d403b7c68502fb0"
的記錄。
它更快做:
SELECT id FROM transactions WHERE secret_id = 1
比:
SELECT id FROM transactions WHERE secret_string = "52987624f7cb03c61d403b7c68502fb0"
還是不要緊?對於其他操作如SUM(trx)
,COUNT(trx)
,AVG(trx)
等呢?
列secret_id
目前不存在,但如果通過它搜索記錄更快,我打算在行插入時創建它。
謝謝
我希望我有道理。
絕對按INT。當然,與2-4字節比較要快於50-100字節 – Mojtaba
它應該很重要,在搜索時,INT應該比'varchar(50)'快,儘管你可以創建帶有百萬條記錄的測試表,並且這兩種類型的列和測試它。 (希望不要忘記索引) –