1
AlkTTT 2021-07-14 18:01:36 +08:00
你这不是优化的事了吧,长文章,还用 like ;
试试 es ? |
2
TimePPT 2021-07-14 18:02:22 +08:00
记得 like '%关键词%' 会索引失效全表扫
试试正则匹配? |
3
aragakiyuii 2021-07-14 18:22:43 +08:00 via iPhone
|
4
shanyang88 OP @AlkTTT 请问啥是 es?
|
5
CEBBCAT 2021-07-14 19:42:03 +08:00
@shanyang88 #4 Google “ES 搜索”或者“MySQL 全文索引”,可以得到以下两个链接:
https://www.ruanyifeng.com/blog/2017/08/elasticsearch.html http://mysql.taobao.org/monthly/2015/10/01/ |
6
chenqh 2021-07-14 19:47:12 +08:00
你大于 2021 的文章数目有多少?
感觉 mysql 的索引好弱, 每当这个时候就想 pg 了, 但是 pg 用起来不顺手呀 |
7
oneisall8955 2021-07-14 20:33:17 +08:00 via Android
MySQL:我好难
|
8
zakokun 2021-07-14 21:35:45 +08:00
首先我看语句是要找到符合那几个条件并且标题里面包含 这几个词语的文章对吗?
最好的方法是导入到 es 去搜索,但是我想这对你有点复杂,你可以换个方案,先执行 SELECT `t`, `c`, `username`, `userid`, `time`, `ccount`, `vcount`, `u` FROM `p` where `pl`>=300 AND `ccount`>=4 AND time>'2021-01-01 00:00:00' 这个条件,找到符合条件的文章,然后在代码中通过你们后端代码的字符串匹配功能去从 t 字段里面匹配这几个词语, 这个速度绝对比你用 sql 语句来匹配要快得多,然后 order by publish_time 也可以通过代码去排序 |
9
levelworm 2021-07-15 05:33:05 +08:00
能不能先把这些关键字全找出来然后用 IN ('...', '...')
|
10
xiaoqiao24 2021-07-15 09:16:51 +08:00
1. 模糊查询时,关键字前面有%不走索引,导致全表扫描
2. c 没有索引,导致全表扫描。 推荐: 一、mysql 1. 分库,分表式优化。不要在一张表里放大量数据,mysql 数据百万以上时,效率降低。 2. 模糊查询时,不要在关键字前面加%,避免全表扫描。 二、es 就单单针对模糊查询这点,赶紧上 es 吧,别犹豫了。 |
11
kiracyan 2021-07-15 14:20:41 +08:00
like 里面别用 or 了 单一条件 like 然后 union 应该会好不少
|