千万级无主键索引和约束时MySQL查询常用类型的效率

针对结构如下表,插入1000万数据之后删除主键、索引和约束:

-- 无任何主键、索引和约束
mysql> select * from user limit 3;
+----+-----------+--------+--------------+---------------------+
| id | varchar15 | char15 | decimal15_3 | datetime            |
+----+-----------+--------+--------------+---------------------+
|  1 | 1         | 1      |        1.000 | 2016-01-24 21:42:04 |
|  2 | 2         | 2      |        2.000 | 2016-01-24 21:42:05 |
|  3 | 3         | 3      |        3.000 | 2016-01-24 21:42:06 |
+----+-----------+--------+--------------+---------------------+
3 rows in set (0.00 sec)
-- 无任何主键、索引和约束时,查询int栏
mysql> select * from user where id = 5000000 limit 1;
+---------+---------+---------+-----------+---------------------+
| 5000000 | 5000000 | 5000000 | 10000.000 | 2016-03-22 18:35:23 |
+---------+---------+---------+-----------+---------------------+
1 row in set (0.74 sec)
mysql> select * from user where id = 10000000 limit 1;
+----------+----------+----------+-----------+---------------------+
| 10000000 | 10000000 | 10000000 | 10000.000 | 2016-05-19 15:28:43 |
+----------+----------+----------+-----------+---------------------+
1 row in set (1.46 sec)
-- 无任何主键、索引和约束时,查询varchar栏
mysql> select * from user where varchar15 = '5000000' limit 1;
+---------+---------+---------+-----------+---------------------+
| 5000000 | 5000000 | 5000000 | 10000.000 | 2016-03-22 18:35:23 |
+---------+---------+---------+-----------+---------------------+
1 row in set (0.82 sec)
mysql> select * from user where varchar15 = '10000000' limit 1;
+----------+----------+----------+-----------+---------------------+
| 10000000 | 10000000 | 10000000 | 10000.000 | 2016-05-19 15:28:43 |
+----------+----------+----------+-----------+---------------------+
1 row in set (1.60 sec)
-- 无任何主键、索引和约束时,查询char栏
mysql> select * from user where char15 = '5000000' limit 1;
+---------+---------+---------+-----------+---------------------+
| 5000000 | 5000000 | 5000000 | 10000.000 | 2016-03-22 18:35:23 |
+---------+---------+---------+-----------+---------------------+
1 row in set (0.93 sec)
mysql> select * from user where char15 = '10000000' limit 1;
+----------+----------+----------+-----------+---------------------+
| 10000000 | 10000000 | 10000000 | 10000.000 | 2016-05-19 15:28:43 |
+----------+----------+----------+-----------+---------------------+
1 row in set (1.84 sec)
-- 无任何主键、索引和约束时,查询datetime栏
mysql> select * from user where datetime = '2016-03-22 18:35:23' limit 1;
+---------+---------+---------+-----------+---------------------+
| 5000000 | 5000000 | 5000000 | 10000.000 | 2016-03-22 18:35:23 |
+---------+---------+---------+-----------+---------------------+
1 row in set (0.92 sec)
mysql> select * from user where datetime = '2016-05-19 15:28:43' limit 1;
+----------+----------+----------+-----------+---------------------+
| 10000000 | 10000000 | 10000000 | 10000.000 | 2016-05-19 15:28:43 |
+----------+----------+----------+-----------+---------------------+
1 row in set (1.81 sec)


转载于:https://my.oschina.net/koulikoro/blog/608691

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值