pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

<tfoot id='ca9qL'></tfoot>

<small id='ca9qL'></small><noframes id='ca9qL'>

<legend id='ca9qL'><style id='ca9qL'><dir id='ca9qL'><q id='ca9qL'></q></dir></style></legend>

  1. <i id='ca9qL'><tr id='ca9qL'><dt id='ca9qL'><q id='ca9qL'><span id='ca9qL'><b id='ca9qL'><form id='ca9qL'><ins id='ca9qL'></ins><ul id='ca9qL'></ul><sub id='ca9qL'></sub></form><legend id='ca9qL'></legend><bdo id='ca9qL'><pre id='ca9qL'><center id='ca9qL'></center></pre></bdo></b><th id='ca9qL'></th></span></q></dt></tr></i><div class="3v57h7j" id='ca9qL'><tfoot id='ca9qL'></tfoot><dl id='ca9qL'><fieldset id='ca9qL'></fieldset></dl></div>
      <bdo id='ca9qL'></bdo><ul id='ca9qL'></ul>
    1. 如何優(yōu)化 MySQL 的 ORDER BY RAND() 函數(shù)?

      How can i optimize MySQL#39;s ORDER BY RAND() function?(如何優(yōu)化 MySQL 的 ORDER BY RAND() 函數(shù)?)
        <bdo id='OYdg3'></bdo><ul id='OYdg3'></ul>

            <tbody id='OYdg3'></tbody>
          • <legend id='OYdg3'><style id='OYdg3'><dir id='OYdg3'><q id='OYdg3'></q></dir></style></legend>

            1. <small id='OYdg3'></small><noframes id='OYdg3'>

              <tfoot id='OYdg3'></tfoot>

                <i id='OYdg3'><tr id='OYdg3'><dt id='OYdg3'><q id='OYdg3'><span id='OYdg3'><b id='OYdg3'><form id='OYdg3'><ins id='OYdg3'></ins><ul id='OYdg3'></ul><sub id='OYdg3'></sub></form><legend id='OYdg3'></legend><bdo id='OYdg3'><pre id='OYdg3'><center id='OYdg3'></center></pre></bdo></b><th id='OYdg3'></th></span></q></dt></tr></i><div class="957l7jb" id='OYdg3'><tfoot id='OYdg3'></tfoot><dl id='OYdg3'><fieldset id='OYdg3'></fieldset></dl></div>
                本文介紹了如何優(yōu)化 MySQL 的 ORDER BY RAND() 函數(shù)?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

                問題描述

                我想優(yōu)化我的查詢,所以我查看了 mysql-slow.log.

                I'd like to optimize my queries so I look into mysql-slow.log.

                我的大多數(shù)慢查詢都包含 ORDER BY RAND().我找不到解決此問題的真正解決方案.MySQLPerformanceBlog<有一個可能的解決方案/a> 但我認(rèn)為這還不夠.在優(yōu)化不佳(或經(jīng)常更新、用戶管理)的表上,它不起作用,或者我需要運行兩個或多個查詢才能選擇我的 PHP 生成的隨機行.

                Most of my slow queries contains ORDER BY RAND(). I cannot find a real solution to resolve this problem. Theres is a possible solution at MySQLPerformanceBlog but I don't think this is enough. On poorly optimized (or frequently updated, user managed) tables it doesn't work or I need to run two or more queries before I can select my PHP-generated random row.

                這個問題有什么解決辦法嗎?

                Is there any solution for this issue?

                一個虛擬的例子:

                SELECT  accomodation.ac_id,
                        accomodation.ac_status,
                        accomodation.ac_name,
                        accomodation.ac_status,
                        accomodation.ac_images
                FROM    accomodation, accomodation_category
                WHERE   accomodation.ac_status != 'draft'
                        AND accomodation.ac_category = accomodation_category.acat_id
                        AND accomodation_category.acat_slug != 'vendeglatohely'
                        AND ac_images != 'b:0;'
                ORDER BY
                        RAND()
                LIMIT 1
                

                推薦答案

                試試這個:

                SELECT  *
                FROM    (
                        SELECT  @cnt := COUNT(*) + 1,
                                @lim := 10
                        FROM    t_random
                        ) vars
                STRAIGHT_JOIN
                        (
                        SELECT  r.*,
                                @lim := @lim - 1
                        FROM    t_random r
                        WHERE   (@cnt := @cnt - 1)
                                AND RAND(20090301) < @lim / @cnt
                        ) i
                

                這在 MyISAM 上特別有效(因為 COUNT(*) 是即時的),但即使在 InnoDB 中它也是 10ORDER BY RAND() 效率高幾倍.

                This is especially efficient on MyISAM (since the COUNT(*) is instant), but even in InnoDB it's 10 times more efficient than ORDER BY RAND().

                這里的主要思想是我們不排序,而是保留兩個變量并計算當(dāng)前步驟要選擇的行的運行概率.

                The main idea here is that we don't sort, but instead keep two variables and calculate the running probability of a row to be selected on the current step.

                有關(guān)詳細(xì)信息,請參閱我博客中的這篇文章:

                See this article in my blog for more detail:

                • 選擇隨機行

                更新:

                如果你只需要選擇一個隨機記錄,試試這個:

                If you need to select but a single random record, try this:

                SELECT  aco.*
                FROM    (
                        SELECT  minid + FLOOR((maxid - minid) * RAND()) AS randid
                        FROM    (
                                SELECT  MAX(ac_id) AS maxid, MIN(ac_id) AS minid
                                FROM    accomodation
                                ) q
                        ) q2
                JOIN    accomodation aco
                ON      aco.ac_id =
                        COALESCE
                        (
                        (
                        SELECT  accomodation.ac_id
                        FROM    accomodation
                        WHERE   ac_id > randid
                                AND ac_status != 'draft'
                                AND ac_images != 'b:0;'
                                AND NOT EXISTS
                                (
                                SELECT  NULL
                                FROM    accomodation_category
                                WHERE   acat_id = ac_category
                                        AND acat_slug = 'vendeglatohely'
                                )
                        ORDER BY
                                ac_id
                        LIMIT   1
                        ),
                        (
                        SELECT  accomodation.ac_id
                        FROM    accomodation
                        WHERE   ac_status != 'draft'
                                AND ac_images != 'b:0;'
                                AND NOT EXISTS
                                (
                                SELECT  NULL
                                FROM    accomodation_category
                                WHERE   acat_id = ac_category
                                        AND acat_slug = 'vendeglatohely'
                                )
                        ORDER BY
                                ac_id
                        LIMIT   1
                        )
                        )
                

                這假設(shè)您的 ac_id 的分布或多或少是均勻的.

                This assumes your ac_id's are distributed more or less evenly.

                這篇關(guān)于如何優(yōu)化 MySQL 的 ORDER BY RAND() 函數(shù)?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

                【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!

                相關(guān)文檔推薦

                How to use windowing functions efficiently to decide next N number of rows based on N number of previous values(如何有效地使用窗口函數(shù)根據(jù) N 個先前值來決定接下來的 N 個行)
                reuse the result of a select expression in the quot;GROUP BYquot; clause?(在“GROUP BY中重用選擇表達(dá)式的結(jié)果;條款?)
                Does ignore option of Pyspark DataFrameWriter jdbc function ignore entire transaction or just offending rows?(Pyspark DataFrameWriter jdbc 函數(shù)的 ignore 選項是忽略整個事務(wù)還是只是有問題的行?) - IT屋-程序員軟件開發(fā)技
                Error while using INSERT INTO table ON DUPLICATE KEY, using a for loop array(使用 INSERT INTO table ON DUPLICATE KEY 時出錯,使用 for 循環(huán)數(shù)組)
                pyspark mysql jdbc load An error occurred while calling o23.load No suitable driver(pyspark mysql jdbc load 調(diào)用 o23.load 時發(fā)生錯誤 沒有合適的驅(qū)動程序)
                How to integrate Apache Spark with MySQL for reading database tables as a spark dataframe?(如何將 Apache Spark 與 MySQL 集成以將數(shù)據(jù)庫表作為 Spark 數(shù)據(jù)幀讀取?)

                <small id='hFU5f'></small><noframes id='hFU5f'>

                    <tbody id='hFU5f'></tbody>

                  <i id='hFU5f'><tr id='hFU5f'><dt id='hFU5f'><q id='hFU5f'><span id='hFU5f'><b id='hFU5f'><form id='hFU5f'><ins id='hFU5f'></ins><ul id='hFU5f'></ul><sub id='hFU5f'></sub></form><legend id='hFU5f'></legend><bdo id='hFU5f'><pre id='hFU5f'><center id='hFU5f'></center></pre></bdo></b><th id='hFU5f'></th></span></q></dt></tr></i><div class="hjfplfh" id='hFU5f'><tfoot id='hFU5f'></tfoot><dl id='hFU5f'><fieldset id='hFU5f'></fieldset></dl></div>
                    <tfoot id='hFU5f'></tfoot>
                    <legend id='hFU5f'><style id='hFU5f'><dir id='hFU5f'><q id='hFU5f'></q></dir></style></legend>
                      • <bdo id='hFU5f'></bdo><ul id='hFU5f'></ul>

                        1. 主站蜘蛛池模板: 辊道窑炉,辊道窑炉厂家-山东艾希尔 | 钢衬四氟管道_钢衬四氟直管_聚四氟乙烯衬里管件_聚四氟乙烯衬里管道-沧州汇霖管道科技有限公司 | 山东钢格板|栅格板生产厂家供应商-日照森亿钢格板有限公司 | 潜水搅拌机-双曲面搅拌机-潜水推进器|奥伯尔环保 | 整合营销推广|营销网络推广公司|石家庄网站优化推广公司|智营销 好物生环保网、环保论坛 - 环保人的学习交流平台 | 北京签证代办_签证办理_商务签证_旅游签证_寰球签证网 | 医用空气消毒机-医用管路消毒机-工作服消毒柜-成都三康王 | 护腰带生产厂家_磁石_医用_热压护腰_登山护膝_背姿矫正带_保健护具_医疗护具-衡水港盛 | 拉力机-拉力试验机-万能试验机-电子拉力机-拉伸试验机-剥离强度试验机-苏州皖仪实验仪器有限公司 | 卷筒电缆-拖链电缆-特种柔性扁平电缆定制厂家「上海缆胜」 | 山东彩钢板房,山东彩钢活动房,临沂彩钢房-临沂市贵通钢结构工程有限公司 | 生产自动包装秤_颗粒包装秤_肥料包装秤等包装机械-郑州鑫晟重工科技有限公司 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛调查出轨取证公司_青岛婚外情取证-青岛探真调查事务所 | 货车视频监控,油管家,货车油管家-淄博世纪锐行电子科技 | 紧急切断阀_气动切断阀_不锈钢阀门_截止阀_球阀_蝶阀_闸阀-上海上兆阀门制造有限公司 | 压滤机滤板_厢式_隔膜_板框压滤机滤板厂家价格型号材质-大凯环保 | 不锈钢监控杆_监控立杆厂家-廊坊耀星光电科技有限公司 | 过跨车_过跨电瓶车_过跨转运车_横移电动平车_厂区转运车_无轨转运车 | 东莞市天进机械有限公司-钉箱机-粘箱机-糊箱机-打钉机认准东莞天进机械-厂家直供更放心! | 欧必特空气能-商用空气能热水工程,空气能热水器,超低温空气源热泵生产厂家-湖南欧必特空气能公司 | 网络推广公司_网络营销方案策划_企业网络推广外包平台-上海澜推网络 | 咖啡加盟,咖啡店加盟连锁品牌-卡小逗| 北京康百特科技有限公司-分子蒸馏-短程分子蒸馏设备-实验室分子蒸馏设备 | 制氮设备_PSA制氮机_激光切割制氮机_氮气机生产厂家-苏州西斯气体设备有限公司 | 中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折! | VOC检测仪-甲醛检测仪-气体报警器-气体检测仪厂家-深恒安科技有限公司 | 定时排水阀/排气阀-仪表三通旋塞阀-直角式脉冲电磁阀-永嘉良科阀门有限公司 | 英超直播_英超免费在线高清直播_英超视频在线观看无插件-24直播网 | 香蕉筛|直线|等厚|弧形|振动筛|香蕉筛厂家-洛阳隆中重工 | 闸阀_截止阀_止回阀「生产厂家」-上海卡比阀门有限公司 | 铝机箱_铝外壳加工_铝外壳厂家_CNC散热器加工-惠州市铂源五金制品有限公司 | 不锈钢反应釜,不锈钢反应釜厂家-价格-威海鑫泰化工机械有限公司 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 长沙一级消防工程公司_智能化弱电_机电安装_亮化工程专业施工承包_湖南公共安全工程有限公司 | 全自动面膜机_面膜折叠机价格_面膜灌装机定制_高速折棉机厂家-深圳市益豪科技有限公司 | 广州番禺搬家公司_天河黄埔搬家公司_企业工厂搬迁_日式搬家_广州搬家公司_厚道搬迁搬家公司 | 北京环球北美考试院【官方网站】|北京托福培训班|北京托福培训 | 实体店商新零售|微赢|波后|波后合作|微赢集团 | sus630/303cu不锈钢棒,440C/430F/17-4ph不锈钢研磨棒-江苏德镍金属科技有限公司 | 仓储货架_南京货架_钢制托盘_仓储笼_隔离网_环球零件盒_诺力液压车_货架-南京一品仓储设备制造公司 | 板式换网器_柱式换网器_自动换网器-郑州海科熔体泵有限公司 | 珠海网站建设_响应网站建设_珠海建站公司_珠海网站设计与制作_珠海网讯互联 |