<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
技術能解決的事情改技術
技術解決不了的事情該需求
假設我們目前有兩張表
業務表 書( t_a_book ) 閱讀歷史記錄表 (t_r_book_history) 使用者表
其兩張表的資料邏輯如下
t_a_book
t_r_book_history
t_a_user
當然了,我們假設當前的資料量並不只是我們眼前看到的這幾條資料,而是線上真實情況。
每張表至少都是10w+起步
這時候,我們需要面臨第一個業務問題,
我們需要做一個報表,顯示使用者閱讀圖書的記錄,並顯示使用者名稱,使用者號,書名
這時候我們如何設計查詢SQL
SELECT * FROM t_r_book_history bh LEFT JOIN t_a_user u ON bh.user_id = u.id LEFT JOIN t_a_book b ON bh.book_id = b.id WHERE bh.record_flag = 1 ORDER BY bh.release_time DESC LIMIT 10;
查詢出來的結果為
其邏輯為
如果此時我們選擇化繁為簡,使用單表的查詢方法,來查詢資料其SQL為
SELECT * FROM t_r_book_history bh WHERE bh.record_flag = 1 ORDER BY bh.release_time DESC LIMIT 10; // 使用者資訊 SELECT * FROM t_a_user u WHERE u.id IN (); // 圖書資訊 SELECT * FROM t_a_books b WHERE u.id IN ();
其資料邏輯與多表聯查一致,唯一不同的便是需要查詢三次
我們可以看,當前兩種查詢方式的邏輯來看。
主要會存在的流量壓力在與 t_r_book_history 這張表上面
當資料量大的時候,我們只需要根據release_time 做索引,簡化這一步的操作。
後續都可以使用主鍵來簡化操作
由此來看,兩個語句其實在本質上沒有明顯的快慢之分
現在我們需要增加兩個查詢條件
如果這時候,我們如何編寫SQL
如果我們使用多表聯查的思路來填寫SQL
SELECT * FROM t_r_book_history bh LEFT JOIN t_a_user u ON bh.user_id = u.id LEFT JOIN t_a_book b ON bh.book_id = b.id WHERE bh.record_flag = 1 AND b.name like "四%" and u.name like "張%" ORDER BY bh.release_time DESC LIMIT 10;
顯示的資料
其邏輯為
SELECT * FROM t_a_user WHERE user_name LIKE "張%" SELECT * FROM t_a_book WHERE user_name LIKE "四%" SELECT * FROM t_r_book_history bh WHERE bh.record_flag = 1 ORDER BY bh.release_time DESC LIMIT 10; // 使用者資訊 SELECT * FROM t_a_user u WHERE u.id IN (); // 圖書資訊 SELECT * FROM t_a_books b WHERE u.id IN ();
其查詢邏輯與多表聯查一致
現在主要的問題在於 , t_a_user , t_a_book , t_r_book_history 這三張表都是大表,
我們使用的查詢條件也十分的模糊
簡單的說 , 無論我們使用哪種方法, 都有可能會出現幾十萬個符合的結果
因此,我們無論使用哪種編寫方法 , 這個SQL都是不可行的
文章寫到這裡,我們會發現這個問題,已經不能停留再技術成面的問題。
因此,我們就只能修改需求
我們這裡的問題 , 是這兩張表的查詢條件。他十分的模糊,我們無法將範圍限制在幾條,幾十條,甚至幾百條內。
既然這樣,我們就只能跟需求方表示,這個查詢條件必須使用十分“明確”的資料
例如對於使用者,我們常常能用什麼來明確指向一個使用者呢?
id,資料主鍵,手機號碼
我們如何確定一本書呢?我們可以用一個ISBN
修改這兩個查詢條件,才能將這個不能解決的問題,修改為解決
但是,有人說,我們是技術。不能對產品提這樣的想法,
但是我想說,你是打算在將來來查詢卡半分鐘的時候說,說服所有人這個東西不關我的事
還是說,在未開發前說服產品
到此這篇關於MySQL詳解如何優化查詢條件的文章就介紹到這了,更多相關MySQL查詢條件內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45