一个MYSQL语句优化的问题

淡定的米哥 发布于 2017/03/29 19:16
阅读 149
收藏 0

SQL:

select id from ‘table’ where 1=1 order by RAND() limit 3

说明:

id为varchar类型,由于MySQL的RAND函数性能较低,数据量大的情况下比较消耗性能,希望有MySQL方面的专家和大牛们给点建议!!

加载中
0
小虫0302
小虫0302
知道范围的话,用程序去取随机值,再去查询数据库
0
wenhaoran
wenhaoran

    
    public static List<Integer> getRandomNum0(int smallistNum, int BiggestNum) {
        Random random = new Random();
        List<Integer> re = new ArrayList<Integer>();
        while(re.size() < 3){
            Integer  a = (Math.abs(random.nextInt()) % (BiggestNum - smallistNum + 1)) + smallistNum;
            if(!re.contains(a)){
                re.add(a);
            }
        }
        return re;
    }
(SELECT
  `key`,
  `value`,
  `description`,
  `createTime`
FROM `shishuocms`.`config`
LIMIT 【随机整数】, 1)
UNION
(SELECT
  `key`,
  `value`,
  `description`,
  `createTime`
FROM `shishuocms`.`config`
LIMIT 【随机整数】, 1)
UNION
(SELECT
  `key`,
  `value`,
  `description`,
  `createTime`
FROM `shishuocms`.`config`
LIMIT 【随机整数】, 1)

淡定的米哥
淡定的米哥
1.先获取三个随机数;2.分别利用三个随机数分别三次查询再合并; 略显复杂,也是一种思路。
返回顶部
顶部