让我们假设执行了一次搜索,它错过了索引并执行了一次全表扫描。就本问题而言: SELECT * FROM bigtable WHERE name like '%someone%' 这将需要对name字段执行全表扫描。是否知道在postgres、mysql、h2或sqlite等开源数据库上使用什么字符串搜索算法进行这些全表扫描?我猜这些数据库的每一块都是优化的(即使操作会很慢),所以我想知道在执行这些
现在,如果我在in子句中传递多个值,选择带有强制索引的所有列(*),则会得到特定的记录,而不是全表扫描。如果使用所选列运行相同的查询,则会看到它执行全表扫描。但是在这里,如果我不使用select all (*),就会有一个完整的表扫描。我无法理解mysql是如何读取查询的。请帮我解决这个问题。表| id | col1 | col2 |
+----+---