我想将fulltextsearch用于自动完成服务,这意味着我需要它快速工作!最多两秒钟
搜索结果来自不同的表格,因此我创建了一个将它们连接在一起的视图。 我正在使用的SQL函数是FREETEXTTABLE()。
查询运行速度非常慢,有时长达40秒。
为了优化查询执行时间,我确保基表有一个聚簇索引列,它是一个整数数据类型(而不是GUID)
我有两个问题: 首先,关于如何更快地进行全文搜索的任何其他想法? (不包括升级硬件......) 第二,为什么每次重建完整文本目录后,搜索查询的工作速度非常快(不到一秒),但仅适用于第一次运行。我第二次运行查询时需要几秒钟而且从那里开始下山....任何想法为什么会发生这种情况?
答案 0 :(得分:2)
重建目录后第一次查询速度非常快的原因可能非常简单:
删除目录并重建目录时,必须重建索引,这需要一些时间。如果您在重建完成之前进行查询,那么他们的查询速度会更快,因为更少的数据。您还应该注意到,您的查询结果包含的行数较少。
因此,在重建索引之后,测试查询速度才有意义。
以下选择可能很方便检查索引的大小(以及碎片)。当大小停止增长时,索引的重建就完成了;)
#include <wiringPi.h>
#include <mysql/mysql.h>
int main(int argc, char *argv[])
{
wiringPiSetup();
MYSQL *mysql1 = mysql_init(NULL);
}
答案 1 :(得分:1)
Here's a good resource退房。但是,如果您真的想要提高性能,则必须考虑升级硬件。 (通过将我的数据和全文索引文件移动到单独的读取优化磁盘以及将日志和tempdb移动到单独的写入优化磁盘,我看到了显着的性能提升 - 总共4个额外磁盘加上OS和SQL的1个额外磁盘服务器二进制文件。)
我推荐的其他一些非硬件解决方案: