我在一个相当大的表上运行一些 MySQL 查询(不是 Facebook 规模,而是大约一百万行),我发现它们非常慢。我怀疑原因是我正在查询一个id
字段,但该字段id
尚未声明为主键,也未声明任何索引。
我不能将id
字段设置为主键,因为它不是唯一的,尽管它的基数非常接近 1。在这种情况下,如果我alter table
在字段上添加索引id
,是否应该提高查询速度,鉴于它不是主键?
假设确实如此,索引需要多长时间才能完全发展,以便查询开始快速执行?我的意思是,在执行后出现提示的那一刻alter table
,还是即使出现提示,索引构建也会在内部进行相当长的一段时间?(我在做之前问过,因为我不确定在非唯一字段上声明索引是否会破坏数据库)