mysql 优化rand_mysql优化--巧用rand(),with rollup,help__update2014.1.13
巧用rand()提取隨機(jī)行:
mysql中rand()獲取0-1之間的一個隨機(jī)數(shù).這個函數(shù)和order by能把數(shù)據(jù)隨機(jī)排序。
隨機(jī)從表中取出十條數(shù)據(jù):
select * from tablename order by rand() limit 10;
此方法確實(shí)很方便,但是效率上卻慢的驚人,切勿使用。
SELECT * FROM `table`WHERE id>= ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`)) * RAND() + (SELECT MIN(id) FROM `table`) LIMIT 10
這條語句看上去有點(diǎn)復(fù)雜,但實(shí)際的運(yùn)行效率想到的高,而且能保證10條記錄都是隨機(jī)。測試了下,用時0.048s,相當(dāng)給力。
利用GROUP BY的WITH ROLLUP
使用group by的with rollup子句可以檢索出更多的分組聚合信息。
mysql> select * from demo;+-------+-------+| cname | pname|+-------+-------+| bj ? ?| hd ? || bj ? ?| hd ? || bj ? ?| xc ? || bj ? ?| xc ? || bj ? ?| hd ? || sh ? ?| dh ? || sh ? ?| dh ? || sh ? ?| rg ? || sh ? ?| dh ? |+-------+-------+9 rows in set (0.00 sec)
對demo表按照cname、pname列分組對pname列進(jìn)行聚合計(jì)算如下
mysql> select cname,pname,count(pname) from demo groupby cname,pname;
+-------+-------+--------------+
| cname | pname | count(pname) |
+-------+-------+--------------+
| bj ? | hd ? ?| ? ? ? ? ? ?3 |
| bj ? | xc ? ?| ? ? ? ? ? ?2 |
| sh ? | dh ? ?| ? ? ? ? ? ?3 |
| sh ? | rg ? ?| ? ? ? ? ? ?1 |
+-------+-------+--------------+
4 rows in set (0.00 sec)
同樣使用with rollup關(guān)鍵字后,統(tǒng)計(jì)出更多的信息,如下。
注意: with rollup不可以和ordery by同時使用
mysql> select cname,pname,count(pname) from demo groupby cname,pname with rollup;
+-------+-------+--------------+
| cname | pname | count(pname) |
+-------+-------+--------------+
| bj ? | hd ? ?| ? ? ? ? ? ?3 |
| bj ? | xc ? ?| ? ? ? ? ? ?2 |
| bj ? | NULL ?| ? ? ? ? ? ?5 |
| sh ? | dh ? ?| ? ? ? ? ? ?3 |
| sh ? | rg ? ?| ? ? ? ? ? ?1 |
| sh ? | NULL ?| ? ? ? ? ? ?4 |
| NULL ?| NULL ?| ? ? ? ? ? 9 |
+-------+-------+--------------+
7 rows in set (0.00 sec)
mysql help使用:? ?% \G
1.mysql使用時如果記不住命令可用?獲得幫助。通常是 ? create ?/ ? ? alter ?這樣使用
2.當(dāng)太長的命令記不住可以 ? reg%獲得了regexp的使用方法。? opti%獲得了optimize的使用方法。
3.\G 會格式化輸出sql結(jié)果。使用\G不用加;。
總結(jié)
以上是生活随笔為你收集整理的mysql 优化rand_mysql优化--巧用rand(),with rollup,help__update2014.1.13的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的LAMP源码编译安装linux+Ap
- 下一篇: mysql 优化 修复原理_mysql下