• 请不要在回答技术问题时复制粘贴 AI 生成的内容
tianxiacangshen
V2EX  ›  程序员

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

  •  1
     
  •   tianxiacangshen · Apr 25, 2018 · 6704 views
    This topic created in 3121 days ago, the information mentioned may be changed or developed.
    PHP 技能: 大概三分之一桶水

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

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

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

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

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

    没研究过 elastic 就上 sphinx

    这种全文检索 mysql 不索引
    tianxiacangshen
    tianxiacangshen
    OP
    Apr 25, 2018
    30
    @soho176

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

    天下苍身?
    cxbig
    cxbig
    Apr 25, 2018 via iPhone
    41
    我们只在 debug 的时候用 like 这种命令……
    项目日常信息要上搜索引擎的 solr、sphinx、es 都行
    RorschachZZZ
    RorschachZZZ
    Apr 25, 2018
    42
    like %aaa% 这样搞第一是确实慢。第二数据库容易炸。。。
    icy37785
    icy37785
    Apr 25, 2018 via iPhone
    43
    PHP 前来背锅。。。这应该是数据库优化的问题。。。。跟 PHP 没关系呀。。。你标题如果是 sql 怎么提升查询速度,或许进来的人专业更对口。
    xttttt
    xttttt
    Apr 25, 2018
    44
    这难道不是数据库的问题
    JohnShine
    JohnShine
    Apr 26, 2018
    45
    ES
    ben1024
    ben1024
    Apr 26, 2018
    46
    这语文水平,放弃 PHP 吧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3401 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 92ms · UTC 10:09 · PVG 18:09 · LAX 02:09 · JFK 05:09
    ♥ Do have faith in what you're doing.