2014-03-26 48 views
0

我有這樣的表:這是最好的索引嗎?

CREATE TABLE ph_numbersservice_area_code INT(2)DEFAULT NULL, number VARCHAR(20)DEFAULT NULL, phone_type INT(1)DEFAULT NULL, date_created日期時間DEFAULT NULL, KEY idx_numbernumber(4)) )ENGINE = InnoDB DEFAULT CHARSET = latin1

我想根據數字列查詢此表。該號碼是一個10位數的電話號碼,這些數字中的前4位可以用作操作員標識符。該表包含約2億行。

我該怎麼做才能改進查詢?

回答

0

你可以做什麼來改善查詢是使number成爲表的主鍵。在InnoDB中,主鍵查找比二級索引查找便宜。

但這意味着您不能使用number的前綴索引。

我想知道爲什麼你使用VARCHAR(20)作爲10位數字。 VARCHAR(10)不會更貼合嗎?

+0

我會嘗試你的建議。 – user1434805

+0

我正在使用varchar 20代替10,因爲我從中獲取數據的來源有時可能不可靠,並且可能會提供長度超過10的電話號碼。我不想在這種情況下丟失數據。 – user1434805