我的表架构是
创建表项(时间,名称,令牌)PRIMARY_KEY(时间,名称)。
其中Time是创建项目的时间戳。当我做以下查询
SELECT Name,来自ITEMS的令牌,其中name =
shoes
加载数据需要一段时间,因为我的表有超过百万行。
我是否需要添加INDEX
以便更快地检索数据?我已经为此表提供了INDEX
,因为有一个PRIMARY KEY
。
答案 0 :(得分:2)
您需要name
的单独索引。主键索引可以处理名称,但只能与time
一起使用。
如果您将其定义为:
PRIMARY_KEY(Name, Time)
然后您的查询可以利用索引。
MySQL在复合索引here上有很好的文档。
答案 1 :(得分:0)
使用PRIMARY_KEY(Time, NAME)
创建索引时,将连接这些值。 MySQL无法使用此索引通过NAME进行搜索。
EXPLAIN SELECT Name, Token from ITEMS where name = shoes
密切注意标记的输出"其中"。这告诉MySQL在所有索引耗尽后需要手动获取和检查的记录数。无需等待或盲目测试。