MySQL繁忙度查詢 mysql 分離度查詢

2021-10-17 21:58:10 字數 1341 閱讀 2500

以下是使用join使用廣度優先,最短路徑搜尋執行搜尋的方法.這個演算法沒有神奇之處,因為我們使用mysql來找到答案,而且我們沒有使用任何使用任何啟發式或優化的花式搜尋演算法.

我的「朋友」表具有單向關係,因此我們確實存在重複項,即儲存「1到2」和「2對1」.我也排除了is_active,因為實現很明顯:

這是資料:

member_id friend_id

1 21 3

1 42 1

2 32 5

2 63 2

3 14 1

5 26 2

6 77 6

7 88 7

我們選擇了會員1,我們要問的是7個朋友,7個朋友,朋友等等嗎?計數0表示否,計數1表示是.

select count(*)

from friends f1

where f1.member_id = 1

and f1.friend_id = 7

如果不是,那麼他們是朋友的朋友嗎?

select count(*)

from friends f1

join friends f2

on f2.member_id = f1.friend_id

where f1.member_id = 1

and f2.friend_id = 7

如果沒有,那麼朋友的朋友呢?

select count(*)

from friends f1

join friends f2

on f2.member_id = f1.friend_id

join friends f3

on f3.member_id = f2.friend_id

where f1.member_id = 1

and f3.friend_id = 7

等等…第三個查詢將找到路徑「1到2」,「2到6」和「6到7」,返回計數1.

每個查詢都變得更加昂貴(由於連線數量較多),因此您可能希望在某些時候限制搜尋.乙個很酷的事情是這個搜尋從兩端向中間工作,這是乙個簡單的優化建議用於最短路徑搜尋.

以下是如何找到成員1的共同朋友推薦:

select f2.friend_id

from friends f1

join friends f2

on f2.member_id = f1.friend_id

left join friends f3

on f3.member_id = f1.member_id

and f3.friend_id = f2.friend_id

where f1.member_id = 1

and f2.friend_id

mysql刪除查詢 MySQL 刪除查詢

如果想從 mysql 表中刪除記錄,就要用到 sql 命令 delete from 可以在命令列中使用該命令,也可以在 php 指令碼中使用它。語法格式 下面是利用 delete 命令刪除 mysql 表中資料的一般語法格式 delete from table name where clause 如...

mysql 慢查詢 MySQL慢查詢

一 簡介 開啟慢查詢日誌,可以讓mysql記錄下查詢超過指定時間的語句,通過定位分析效能的瓶頸,才能更好的優化資料庫系統的效能。二 引數說明 slow query log 慢查詢開啟狀態 slow query log file 慢查詢日誌存放的位置 這個目錄需要mysql的執行帳號的可寫許可權,一般...

mysql模糊查詢 MYSQL模糊查詢

mysql提供標準的sql模式匹配,以及一種基於象unix實用程式如vi grep和sed的擴充套件正規表示式模式匹配的格式。一 sql模式 sql的模式匹配允許你使用 匹配任何單個字元,而 匹配任意數目字元 包括零個字元 在 mysql中,sql的模式預設是忽略大小寫的。下面顯示一些例子。注意在你...