PHP 最简单的提升查询速度的方法 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
tianxiacangshen
V2EX    程序员

PHP 最简单的提升查询速度的方法

  •  1
     
  •   tianxiacangshen 2018-04-25 09:04:47 +08:00 5656 次点击
    这是一个创建于 2727 天前的主题,其中的信息可能已经有所发展或是发生改变。
    PHP 技能: 大概三分之一桶水

    目前 web 环境还是用的 windows 2008 IIS7+ PHP+mysql

    如今遇到在数百万记录中 like %{$word}%的查询,这个速度就已经卡成翔,更不用说如果{$word}包含多个词组然后分拆的查询了

    请问高手们,怎么办?
    46 条回复    2018-04-26 13:01:33 +08:00
    90safe
        1
    90safe  
       2018-04-25 09:08:03 +08:00
    这不是应该数据库的问题吗,索引优化啥的,换 nosql 啥的
    Reign
        2
    Reign  
       2018-04-25 09:14:42 +08:00
    1. match against
    2. 换 elasticsearch
    iamsee
        3
    iamsee  
       2018-04-25 09:24:18 +08:00
    es
    GoPHP
        4
    GoPHP  
       2018-04-25 09:24:34 +08:00
    你应该知道 like '%$word%' 这种写法不会用到索引的,'$word%' 后面写一个%号还可以用到索引。其实这都不是好的解决方法,最好的方法是全文索引,以前喜欢用 sphinx,现在基本上都是用 es 了
    Vogan
        5
    Vogan  
       2018-04-25 09:24:59 +08:00
    不要在 mysql 中做%like%查询
    zgx030030
        6
    zgx030030  
       2018-04-25 09:26:36 +08:00
    全文索引 sphinx php 又一次成功背锅
    nullen
        7
    nullen  
       2018-04-25 09:9:33 +08:00
    跟 PHP 有个蛋关系。
    zhs227
        8
    zhs227  
       2018-04-25 09:31:12 +08:00
    可以用 sphinx,配套 mysql 比较靠谱。不是 PHP 的锅
    dobelee
        9
    dobelee  
       2018-04-25 09:32:14 +08:00 via Android
    最近黑 php 的这么多吗。。。
    xmbaozi
        10
    xmbaozi  
       2018-04-25 09:34:18 +08:00
    关 php 什么事。
    上 elasticsearch
    或 mysql 全文搜索(没用过)
    onepunch
        11
    onepunch  
       2018-04-25 09:40:38 +08:00
    数据量大到一定程度跟语言没有关系,你上 c 语言来查也慢

    你说的这个问题分库分表解决不了吗?
    patx
        12
    patx  
       2018-04-25 09:44:09 +08:00 via Android
    上全文搜索
    nineyang1
        13
    nineyang1  
       2018-04-25 09:50:07 +08:00
    高级黑
    asen477
        14
    asen477  
       2018-04-25 09:53:45 +08:00
    mysql 做全文索引,分表分库去做视图等
    linxl
        15
    linxl  
       2018-04-25 10:01:25 +08:00
    php 日常被黑系列
    sdpfoue
        16
    sdpfoue  
       2018-04-25 10:11:05 +08:00
    低端黑
    akira
        17
    akira  
       2018-04-25 10:16:33 +08:00
    楼主你的数据库技能比 php 更弱啊,上全文搜索吧
    yimaneilicj
        18
    yimaneilicj  
       2018-04-25 10:21:35 +08:00
    学习了
    wangjhsir
        19
    wangjhsir  
       2018-04-25 10:34:09 +08:00 via iPhone
    上 es 吧
    you know,for search
    torbrowserbridge
        20
    torbrowserbridge  
       2018-04-25 10:45:02 +08:00
    标题党,我还以为你能让 PHP 执行速度提升呢
    vincenttone
        21
    vincenttone  
       2018-04-25 10:47:37 +08:00
    用不上索引,需要加分词系统了
    jrient
        22
    jrient  
       2018-04-25 10:54:50 +08:00
    垃圾 php 换 go 把 [doge][doge]
    tianxiacangshen
        23
    tianxiacangshen  
    OP
       2018-04-25 10:58:47 +08:00
    @zgx030030
    @nullen
    @nineyang1
    @linxl
    @sdpfoue
    @akira
    @jrient

    没有黑 PHP 啊,是我 PHP 和数据库都太弱了,sql 语句都是 PHP 框架构造的,有时候由于 PHP 不行语句没构造好,因此才归咎于自己的 PHP 不行
    soho176
        24
    soho176  
       2018-04-25 11:00:52 +08:00
    厉害了,做的啥站,数据这么多?采集来的数据?
    Mazexal
        25
    Mazexal  
       2018-04-25 11:12:55 +08:00
    上 solr
    enenaaa
        26
    enenaaa  
       2018-04-25 11:17:32 +08:00
    不想用其他工具的话, 就试试 mysql 的全文索引。
    g8287694
        27
    g8287694  
       2018-04-25 11:18:32 +08:00
    @tianxiacangshen 啥叫 php 不行语句没构造好
    你用 like 你随便给我来个上面语言速度快的看看
    nullen
        28
    nullen  
       2018-04-25 11:51:47 +08:00
    @tianxiacangshen 你先学学如何提问,如何比较好的表述自己的问题。
    chinvo
        29
    chinvo  
       2018-04-25 11:53:55 +08:00
    日常黑 PHP

    没研究过 elastic 就上 sphinx

    这种全文检索 mysql 不索引
    tianxiacangshen
        30
    tianxiacangshen  
    OP
       2018-04-25 11:56:17 +08:00
    @soho176

    网站久了,数据自然慢慢就多了,评论和回复数据达到百万了
    frozenway
        31
    frozenway  
       2018-04-25 11:57:58 +08:00
    <img src=" ">我之前问类似问题,都快被骂死了
    alexsunxl
        32
    alexsunxl  
       2018-04-25 12:04:59 +08:00
    上 es 全家桶, 写入和同步比较无痛
    然后读取从 es 里面读
    cy97cool
        33
    cy97cool  
       2018-04-25 12:24:29 +08:00 via Android
    求问如果就是要解决一个这种 like 查询的需求
    有没有封装好 elasticsearch 的软件 比如只要配置 mysql 连接信息 要建索引的表和列 然后就提供 api 供查询调用
    tianxiacangshen
        34
    tianxiacangshen  
    OP
       2018-04-25 12:46:58 +08:00
    @frozenway 没办法,技术太菜了,该骂
    simaguo
        35
    simaguo  
       2018-04-25 14:41:00 +08:00
    elasticsearch 了解下
    wekw
        36
    wekw  
       2018-04-25 14:46:06 +08:00
    数百万对于 MySQL 来说压力确实过大了
    SummerWQM
        37
    SummerWQM  
       2018-04-25 15:43:34 +08:00
    和我 PHP 有什么关系啊
    changwei
        38
    changwei  
       2018-04-25 15:49:00 +08:00 via Android
    我曾经搞过一个项目,sql server+c#的,不加索引,两千万行数据里面条件查询照样要查几分钟,明明是你用法不对,哪里是 php 和 mysql 的锅。
    sessionstop
        39
    sessionstop  
       2018-04-25 16:04:00 +08:00
    我笑了,php 是最好的语言好伐,这么容易招黑么。
    mingzu
        40
    mingzu  
       2018-04-25 18:41:02 +08:00
    ID 也很有意思啊。。。
    楼主南方人吗?

    天下苍身?
    cxbig
        41
    cxbig  
       2018-04-25 18:45:44 +08:00 via iPhone
    我们只在 debug 的时候用 like 这种命令……
    项目日常信息要上搜索引擎的 solr、sphinx、es 都行
    RorschachZZZ
        42
    RorschachZZZ  
       2018-04-25 18:49:29 +08:00
    like %aaa% 这样搞第一是确实慢。第二数据库容易炸。。。
    icy37785
        43
    icy37785  
       2018-04-25 19:52:41 +08:00 via iPhone
    PHP 前来背锅。。。这应该是数据库优化的问题。。。。跟 PHP 没关系呀。。。你标题如果是 sql 怎么提升查询速度,或许进来的人专业更对口。
    xttttt
        44
    xttttt  
       2018-04-25 22:54:19 +08:00
    这难道不是数据库的问题
    JohnShine
        45
    JohnShine  
       2018-04-26 09:55:19 +08:00
    ES
    ben1024
        46
    ben1024  
       2018-04-26 13:01:33 +08:00
    这语文水平,放弃 PHP 吧
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2648 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 02:20 PVG 10:20 LAX 19:20 JFK 22:20
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86