1. 表ta_app_download_log 中t
ype 类型 varchar(5)
2.复制表 ta_app_download_log 中数据到 表ta_app_download_log_1 中, 表 ta_app_download_log_1 中 t ype 类型 tinyint(4)(1)第一次查询[SQL] SELECT COUNT(DISTINCT deviceid) FROM ta_app_download_log WHERE type = '7';受影响的行: 0时间: 10.235ms(2)第二次查询[SQL] RESET QUERY CACHE;受影响的行: 0时间: 0.001ms[SQL]SELECT COUNT(DISTINCT deviceid) FROM ta_app_download_log WHERE type = '7';受影响的行: 0时间: 10.143ms(3)第三次查询[SQL] RESET QUERY CACHE;受影响的行: 0时间: 0.001ms[SQL]SELECT COUNT(DISTINCT deviceid) FROM ta_app_download_log WHERE type = '7';受影响的行: 0时间: 9.971ms
3.在表ta_app_download_log_1 的type列建立索引(1)第一次查询[SQL]RESET QUERY CACHE;受影响的行: 0时间: 0.001ms[SQL]SELECT COUNT(DISTINCT deviceid)FROM ta_app_download_log_1 WHERE type = 7;受影响的行: 0时间: 8.860ms(2) 第二次查询[SQL] RESET QUERY CACHE;受影响的行: 0时间: 0.001ms[SQL]SELECT COUNT(DISTINCT deviceid)FROM ta_app_download_log_1 WHERE type = 7;受影响的行: 0时间: 8.153ms(3)第三次查询[SQL] RESET QUERY CACHE;受影响的行: 0时间: 0.001ms[SQL]SELECT COUNT(DISTINCT deviceid)FROM ta_app_download_log_1 WHERE type = 7;受影响的行: 0时间: 8.059ms
(1)第一次查询[SQL] RESET QUERY CACHE;受影响的行: 0时间: 0.001ms
[SQL]SELECT COUNT(DISTINCT deviceid)FROM ta_app_download_log_1 WHERE type = 7;受影响的行: 0时间: 18.388ms(2)第二次查询[SQL] RESET QUERY CACHE;受影响的行: 0时间: 0.001ms
[SQL]SELECT COUNT(DISTINCT deviceid)FROM ta_app_download_log_1 WHERE type = 7;受影响的行: 0时间: 18.538ms(3)第三次查询[SQL] RESET QUERY CACHE;受影响的行: 0时间: 0.001ms
[SQL]SELECT COUNT(DISTINCT deviceid)FROM ta_app_download_log_1 WHERE type = 7;受影响的行: 0时间: 18.312ms
4. 结论
比较,1和2中的操作,可知:同样的数据,在查询时
tinyint类型 比 varchar 速度快
比较2和3中的操作,可知:加索引并不一定能够提高查询速度,由于type的取值范围很小,只有几个取值(7,8,10,15等),使用索引带来的开销反而比不用索引大