我正在使用spring boot开发rest api服务,所以我在db(postgres)中有下表
CREATE TABLE users
(
id serial NOT NULL,
name text,
surname text,
email text,
password text,
phone_code text,
phone_number text,
user_key text NOT NULL,
registration_push_notification_id text,
os_type text,
bonuses integer,
phone_number_verified boolean DEFAULT false,
email_verified boolean DEFAULT false,
active boolean DEFAULT false,
car_mark text,
car_body text,
car_number text,
settings jsonb,
registration_time timestamp with time zone NOT NULL,
blocked boolean DEFAULT false
}
关注界面public interface UserRepository extends CrudRepository<Users,Integer>
现在我向db添加一些索引,如
CREATE INDEX user_id
ON users
USING btree
(id);
为了测试它我用简单的结构写了简单的休息控制器
public String test(@PathVariable id){
long before = System.currentTimeMillis();
repository.findOne(id);
long after = System.currentTimeMillis();
System.out.println("Time is: "+(after-before));
}
问题是:创建索引之前和之后此方法显示相同的结果,在用户表中几乎有100000行。而且这个脚本
explain select * from users where id =4
在索引
之前显示以下内容"Seq Scan on users (cost=0.00..12 rows=1 width=432)"
在索引之后
"Seq Scan on users (cost=0.00..1.05 rows=1 width=432)"
如何检查spring boot是否在方法findOne(Integer in?)中使用此索引?