mysql数据库是如何实时工作还是在搜索请求中工作的?

icnyk63a  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(307)

我想有一个问题,我面临一个条件,我必须带来的搜索查询参数为基础的结果,我必须在它实现分页太。
假设搜索字符串中有百事可乐
我的疑问如下

Select * from product where product_title Like '%pepsi%' LIMIT 0,100

表产品有5000万行。
所以,我的问题是mysql将如何工作?mysql是不是在产品表中针对关键字pepsi遍历了所有5000万行?如果是这种情况,查询速度会非常慢,即使我添加分页偏移量也会花费很多分钟?

1bqhqjot

1bqhqjot1#

mysql是不是在产品表中针对关键字pepsi遍历了所有5000万行?
是的,但是根据设置,它可能会在网络端阻塞。也就是说,为什么它的点击率要超过100次?你要求0-100,所以点击100次就结束了。
如果是这种情况,查询速度会非常慢,即使我添加分页偏移量也会花费很多分钟?
是的,在一台30年前的电脑上。在现代机器上,对不起,5000万行是小的。一手的秒听起来更像。哦,很明显,在前100个结果之后就停止了。即使10万个结果也很小。请,把一些像样的现代机器有ssd存储和看东西飞。

r7s23pms

r7s23pms2#

您可以做的第一个优化就是避免使用 Select * . 它获取的列(数据)比需要的多,因此阻塞了网络。阅读:为什么选择*被认为是有害的? LIKE '%...%' 将无法使用索引( Like '..%' 可以使用索引)。您可以考虑实现全文搜索。 Limit 子句将确保查询在找到100行中包含pepsi子字符串的行时,将停止扫描更多的行。所以不会那么慢。

相关问题