使用 MySQL 索引 Varchar
Indexing a Varchar with MySQL
我有一个 table foo
这样的:
id | column1
1 | normalized_string_format1
2 | normalized_string_format1
3 | normalized_string_format2
4 | normalized_string_format3
table 上的查询总是:
SELECT * FROM foo WHERE column1 = 'some_string'
和
INSERT INTO foo (column1) VALUES ('some_string')
请注意,上面示例中的前两行有 normalized_string_format1
,因此第 1 列不是唯一的。我应该在 column1 中创建一些索引以提高性能吗?在这种情况下,我应该选择哪一个索引?
如果 table foo
是重要的,那么在 column1 上添加索引可能会提高性能。
您可以这样创建索引:
CREATE INDEX foo_IX1 ON foo (column1)
INSERT/UPDATE/DELETE 语句将做更多的工作,以维护索引条目。
但是在 column1 上带有相等谓词的 SELECT 语句将能够使用索引范围扫描操作,这意味着它可以避免检查 table 中的每个翻转行。
我有一个 table foo
这样的:
id | column1
1 | normalized_string_format1
2 | normalized_string_format1
3 | normalized_string_format2
4 | normalized_string_format3
table 上的查询总是:
SELECT * FROM foo WHERE column1 = 'some_string'
和
INSERT INTO foo (column1) VALUES ('some_string')
请注意,上面示例中的前两行有 normalized_string_format1
,因此第 1 列不是唯一的。我应该在 column1 中创建一些索引以提高性能吗?在这种情况下,我应该选择哪一个索引?
如果 table foo
是重要的,那么在 column1 上添加索引可能会提高性能。
您可以这样创建索引:
CREATE INDEX foo_IX1 ON foo (column1)
INSERT/UPDATE/DELETE 语句将做更多的工作,以维护索引条目。
但是在 column1 上带有相等谓词的 SELECT 语句将能够使用索引范围扫描操作,这意味着它可以避免检查 table 中的每个翻转行。