Skip to content

老陈是一个普通的文艺二逼青年

For The Dream

mysql观察(二)

Written by chen

mysql 获取随机数据

数据量为5500W

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# myisam
 
SELECT *
FROM `table_b` AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `table_b`)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id ASC LIMIT 5;   # 耗时 0.010
 
 
 
SELECT * FROM `table_b`
WHERE id >= (SELECT FLOOR(RAND() * (SELECT MAX(id) FROM `table_b`)))
ORDER BY id LIMIT 1;        # 耗时 0.100
 
 
SELECT * FROM `table_b`
WHERE id >= (SELECT FLOOR( RAND() * ((SELECT MAX(id) FROM `table_b`)-(SELECT MIN(id) FROM `table_b`)) + (SELECT MIN(id) FROM `table_b`)))
ORDER BY id LIMIT 1;        # 耗时 0.100
 
SELECT *
FROM `table_b` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table_b`)-(SELECT MIN(id) FROM `table_b`))+(SELECT MIN(id) FROM `table_b`)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id LIMIT 1;     # 耗时 0.010

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# innodb
 
SELECT *
FROM `table_b` AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `table_b`)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id ASC LIMIT 5;   # 耗时 0.008
 
 
 
SELECT * FROM `table_b`
WHERE id >= (SELECT FLOOR(RAND() * (SELECT MAX(id) FROM `table_b`)))
ORDER BY id LIMIT 1;        # 耗时 0.005
 
 
SELECT * FROM `table_b`
WHERE id >= (SELECT FLOOR( RAND() * ((SELECT MAX(id) FROM `table_b`)-(SELECT MIN(id) FROM `table_b`)) + (SELECT MIN(id) FROM `table_b`)))
ORDER BY id LIMIT 1;        # 耗时 0.005
 
SELECT *
FROM `table_b` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table_b`)-(SELECT MIN(id) FROM `table_b`))+(SELECT MIN(id) FROM `table_b`)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id LIMIT 1;     # 耗时 0.010

mysql · mysql

Copyright © 2022 老陈是一个普通的文艺二逼青年. 沪ICP备13044041号-1