我正在使用mysql数据库,它只有一个表“数据”,有17,151257行。这个表有一个列字符串。我想打印字符串列包含特定查询字符串(存储在“entered_query”变量中)的所有行,所以我使用了以下内容:
SELECT DISTINCT * from data WHERE string LIKE '%".$entered_query."%' limit 10
很明显,上面的查询花费了太多时间来执行。
我已经读过可以使用索引,但是在这种情况下如何使用?
我还想过将整个数据分成 10 个不同的行,然后使用 perl DBI执行 10 个并行查询。
现在我有以下问题:
- 如何减少执行时间?
- 我听说 mysql 查询中的“LIKE”避免了索引,所以对于上述查询有没有更好的选择?
- 当我们在 mysql 查询中使用限制 10 时,mysql 会在找到前 10 个结果后立即停止执行,或者首先搜索给定查询的整个数据,然后返回前 10 个结果