status字段0或者1,判断是否审核通过,0只是最新几行会出现,后面几十万行,都是1.请问是否需要创建索引?
10条回答 默认 最新
- a718089112 2018-06-01 06:48关注
试验了一下:参考下,表结构如下如,sql总共1010000条数据。前99条status=0 后面都为1:
status建立索引前: [SQL]select count(*) from sys_user ; 受影响的行: 0 时间: 0.166s [SQL] SELECT * from sys_user where `status` = 0 ; 受影响的行: 0 时间: 0.235s [SQL] SELECT * from sys_user where `status` = 1 ; 受影响的行: 0 时间: 0.514s [SQL]select count(*) from sys_user ; 受影响的行: 0 时间: 0.165s [SQL] SELECT * from sys_user where `status` = 0 ; 受影响的行: 0 时间: 0.232s [SQL] SELECT * from sys_user where `status` = 1 ; 受影响的行: 0 时间: 0.515s [SQL]select count(*) from sys_user ; 受影响的行: 0 时间: 0.165s [SQL] SELECT * from sys_user where `status` = 0 ; 受影响的行: 0 时间: 0.232s [SQL] SELECT * from sys_user where `status` = 1 ; 受影响的行: 0 时间: 0.512s status建立索引后: [SQL]select count(*) from sys_user ; 受影响的行: 0 时间: 0.148s [SQL] SELECT * from sys_user where `status` = 0 ; 受影响的行: 0 时间: 0.001s [SQL] SELECT * from sys_user where `status` = 1 ; 受影响的行: 0 时间: 1.098s [SQL]select count(*) from sys_user ; 受影响的行: 0 时间: 0.147s [SQL] SELECT * from sys_user where `status` = 0 ; 受影响的行: 0 时间: 0.001s [SQL] SELECT * from sys_user where `status` = 1 ; 受影响的行: 0 时间: 1.098s [SQL]select count(*) from sys_user ; 受影响的行: 0 时间: 0.147s [SQL] SELECT * from sys_user where `status` = 0 ; 受影响的行: 0 时间: 0.001s [SQL] SELECT * from sys_user where `status` = 1 ; 受影响的行: 0 时间: 1.137s
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用