随笔分类 - Mysql笔记
Mysql笔记
摘要:一直以为mysql随机查询几条数据,就用SELECT * FROM `table` ORDER BY RAND() LIMIT 5就可以了。但是真正测试一下才发现这样效率非常低。一个15万余条的库,查询5条数据,居然要8秒以上查看官方手册,也说rand()放在ORDER BY 子句中会被执行多次,自然效率及很低。You cannot use a column with RAND() values in an ORDER BY clause, because ORDER BY would evaluate the column multiple times.搜索Google,网上基本上都是查询m
阅读全文
摘要:在mysql中查询5条不重复的数据,使用以下:1 SELECT * FROM `table` ORDER BY RAND() LIMIT 5就可以了。但是真正测试一下才发现这样效率非常低。一个15万余条的库,查询5条数据,居然要8秒以上搜索Google,网上基本上都是查询max(id) * rand()来随机获取数据。1 SELECT *2 FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `table`)) AS id) AS t23 WHERE t1.id >= t2.id4 ORDER BY t1
阅读全文
摘要:介绍一下关于Mysql数据回滚错误的解决方法。需要的朋友可以过来参考下MYSQL的事务处理主要有两种方法。1、用begin,rollback,commit来实现begin 开始一个事务rollback 事务回滚commit 事务确认2、直接用set来改变mysql的自动提交模式MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过set autocommit=0 禁止自动提交set autocommit=1 开启自动提交来实现事务的处理。当你用 set autocommit=0 的时候,你以后所有的SQL都将做为事务处理,直到你用commit确认或rollback结
阅读全文
摘要:mysql中limit的用法解析。在mysql中,select * from table limit m,n。其中m是指记录开始的index,从0开始,n是指从第m条开始,取n条。例如:mysql(root@localhost:test)>select * from total;+----+-----------------+--------+------------+| id | name | number | mydate |+----+-----------------+--------+------------+| 1 | 河南出版社 | 1000 | 2008-03-24 ||
阅读全文
摘要:在做一些查询时,总希望能避免数据库引擎做全表扫描,因为全表扫描时间长,而且其中大部分扫描对客户端而言是没有意义的。那么,在mysql中有那些方式是可以避免全表扫面?除了通过使用索引列或分区等方式来进行查询的优化之外,还有那些呢?看了一个老外写的程序,在 MySQL 查询中使用了很多 Limit 关键字,这就让我很感兴趣了,因为在我印象中, Limit 关键字似乎更多被使用 MySQL 数据库的程序员用来做查询分页(当然这也是一种很好的查询优化),那在这里举个例子,假设我们需要一个分页的查询 ,Oracle中一般来说都是用以下 SQL 句子实现:SELECT * FROM( SELECT a1.
阅读全文
摘要:在mysql中是没有top关键字的,在mysql中可以用limit来完成功能。order by id desc limit 10 按照id的倒序排序 取出前10条order by id desc limit 0,10 按照id的倒序排序 取出前10条order by id limit 5,10 按照id的正序排序 从第5条开始取10条sql语句:SELECT cat_id FROM shop_goods_type order by cat_id desc limit 1
阅读全文