麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

mysql多表,隨機查詢優(yōu)化方案

2019-11-02 14:26:54
字體:
供稿:網(wǎng)友

  我以前介紹過最多的就是單表隨機查詢時的優(yōu)化了,今天 看到一站長分享了一個多表隨機查詢優(yōu)化的一些方法與方案,下面我們就一起來看看吧.

  本文主要談?wù)撊绾螌崿F(xiàn)Mysql的隨機查詢,多表隨機查詢。在Mysql中隨機取出一條記錄的實現(xiàn)方法。

  我們通常的查詢是沒有where或者where fields>2這樣的方式,這樣只能取出在某種條件下的一條或多條,如果條件不變(例如2),那么結(jié)果就一直不會有變化。

  那么如何實現(xiàn)隨機查詢呢?本人有兩種方法。

  方法一、數(shù)據(jù)表記錄不大的情況下:

  select * from `table`

  查出來所有的記錄列表,然后array_rand()隨機出一個結(jié)果的數(shù)組的key。連續(xù)的key可以使用mt_rand(1, count($list)); 為什么不使用rand而是mt_rand呢?因為mt_rand幣rand快4倍。

  這種情況下,查出整個列表,存入到Memcache的緩存或者Redis的NoSQL中,下次直接取出結(jié)果集而不需要查表。不過當(dāng)數(shù)據(jù)量一旦超過萬級別,取出列表就很困難了。

  方法二:使用SQL語句隨機

  MYSQL函數(shù)RAND(),產(chǎn)生一個0-1之間的小數(shù),然后MAX(`id`)可以獲得該表中最大的ID。那么MAX(`id`) * RAND()就可以取到表中所有的ID。OK,看語句。

  SELECT * FROM `table` WHERE `id` > (SELECT RAND() * (SELECT MAX(`id`) FROM `table`) LIMIT 0, 1

  既然MAX(`id`) * MAX(`id`)可以取到表里所有值,那么本語句的WHERE就可以取到本表的所有情況,那么這就是一個所有記錄都有可能被取到的隨機SQL語句。

  補充另一篇文章

  1. 多表連接類型

  1. 笛卡爾積(交叉連接) 在MySQL中可以為CROSS JOIN或者省略CROSS即JOIN,或者使用',' 如:

  SELECT * FROM table1 CROSS JOIN table2

  SELECT * FROM table1 JOIN table2

  SELECT * FROM table1,table2

  由于其返回的結(jié)果為被連接的兩個數(shù)據(jù)表的乘積,因此當(dāng)有WHERE, ON或USING條件的時候一般不建議使用,因為當(dāng)數(shù)據(jù)表項目太多的時候,會非常慢。一般使用LEFT [OUTER] JOIN或者RIGHT [OUTER] JOIN

  2. 內(nèi)連接INNER JOIN 在MySQL中把INNER JOIN叫做等值連接,即需要指定等值連接條件在MySQL中CROSS和INNER JOIN被劃分在一起。 join_table: table_reference [INNER | CROSS] JOIN table_f

西瓜電影網(wǎng)[www.aikan.tv/special/xiguadianyingwang/]
actor [join_condition]

  3. MySQL中的外連接,分為左外連接和右連接,即除了返回符合連接條件的結(jié)果之外,還要返回左表(左連接)或者右表(右連接)中不符合連接條件的結(jié)果,相對應(yīng)的使用NULL對應(yīng)。

  例子:

  user表:

  id | name

  ———

  1 | libk

  2 | zyfon

  3 | daodao

  user_action表:

  user_id | action

  —————

  1 | jump

  1 | kick

  1 | jump

  2 | run

  4 | swim

  sql:

  select id, name, action from user as u

  left join user_action a on u.id = a.user_id

  result:

  id | name | action

  ——————————–

  1 | libk | jump ①

  1 | libk | kick ②

  1 | libk | jump ③

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产91精品欧美 | wwwxxx国产 | 成人在线观看一区二区三区 | 视频一区二区中文字幕 | 热99精品视频 | 一级大黄毛片免费观看 | 午夜精品福利视频 | 成人免费一区二区三区在线观看 | 中文字幕在线观看1 | 91热久久免费频精品黑人99 | 久久精品中文字幕 | 广州毛片 | 男女无套免费视频 | a黄在线观看 | 久久久裸体视频 | 午夜视频在线观看免费视频 | 黄色网址免费在线播放 | 久久久国产精品电影 | 国产免费观看a大片的网站 欧美成人一级 | 天天操天天碰 | 欧美性videofree精品 | 亚洲免费视频一区 | 亚洲国产精品500在线观看 | 一本一道久久久a久久久精品91 | 在线播放污 | 91成人天堂久久成人 | 天天色人人爱 | 无遮挡一级毛片视频 | 美女很黄很黄免费的 | 久草在线资源福利站 | 日韩视频一区二区 | 免费在线观看亚洲 | 在线成人免费视频 | 精品国产一区二区三区成人影院 | 免费一级毛片在线播放视频 | 精品成人免费一区二区在线播放 | 少妇av片| hd极品free性xxx护士人 | 成年免费观看视频 | 成人毛片视频免费 | hd性videos意大利复古 |