【发布时间】:2011-04-20 11:45:58
【问题描述】:
大约有 100 万条记录。分页系统需要查询。
查询如下所示:
SELECT field1, field2, field3 FROM table
WHERE field4 = '$value'
ORDER BY field5 ASC limit $offset, 30;
field4 和 field5 上有索引。
我听说了:
制作另一个表(表 6),它是 table4 的索引散列?
搜索数字而不是文本会快很多,所以查询类似于:
SELECT field1, field2, field3 Force
Index(Table6) FROM table WHERE field 6
= '$hashvalue' AND field4 = '$value' ORDER BY field5 ASC limit $offset, 30;
它应该有助于在必须进行文本搜索之前消除 99.99% 的数据,并且无论偏移量如何都应该加快您的查询速度。
我应该如何实现它?你能帮我理解这个例子中哈希表的概念吗?
【问题讨论】:
-
field4和field5上有索引吗?是
index(field4, field5)还是index(field4) index(field5)? -
我尝试了两个版本。观察到类似的加载时间。目前使用 index(field4, field5) 因为我知道它应该工作得更好还是?
-
使用
EXPLAIN,看看查询执行计划是否不同 -
如果是高偏移量导致速度变慢,您可能对 MySQL 中的延迟行查找技巧感兴趣,如 explainextended.com/2011/02/11/late-row-lookups-innodb 中所述
标签: mysql