Wordnet MySQL 语句未完成
Wordnet MySQL statement doesn't complete
我正在使用此处的 Wordnet SQL 数据库:http://wnsqlbuilder.sourceforge.net
一切都很好,并且已经设置了具有适当权限的用户。
我正在尝试查找单词的同义词,并尝试使用本页底部的两个示例语句:http://wnsqlbuilder.sourceforge.net/sql-links.html
SELECT synsetid,dest.lemma,SUBSTRING(src.definition FROM 1 FOR 60) FROM wordsXsensesXsynsets AS src INNER JOIN wordsXsensesXsynsets AS dest USING(synsetid) WHERE src.lemma = 'option' AND dest.lemma <> 'option'
SELECT synsetid,lemma,SUBSTRING(definition FROM 1 FOR 60) FROM wordsXsensesXsynsets WHERE synsetid IN ( SELECT synsetid FROM wordsXsensesXsynsets WHERE lemma = 'option') AND lemma <> 'option' ORDER BY synsetid
但是,它们从未完成。至少在任何合理的时间内都没有,我不得不取消所有查询。所有其他查询似乎都能找到,当我分解第二个 SQL 示例时,我可以让各个部分在合理的时间内工作并完成(大约 0.40 秒)
当我尝试 运行 完整语句时,MySQL 命令行客户端挂起。
这个语法有问题吗?是什么导致它需要这么长时间?
编辑:
"EXPLAIN SELECT ..."
的输出
"EXPLAIN EXTENDED ...; SHOW WARNINGS;"
的输出
我深入研究了所使用的各种语句,发现问题出在 IN
命令中。
MySQL 对数据库中的每一行重复该语句。这是挂起的原因,因为它必须 运行 遍历数十万条记录。
我对此的补救措施是将命令拆分为两个单独的数据库调用,首先获取同义词集,然后动态创建绑定 SQL 字符串以查找同义词集中的单词。
我正在使用此处的 Wordnet SQL 数据库:http://wnsqlbuilder.sourceforge.net
一切都很好,并且已经设置了具有适当权限的用户。
我正在尝试查找单词的同义词,并尝试使用本页底部的两个示例语句:http://wnsqlbuilder.sourceforge.net/sql-links.html
SELECT synsetid,dest.lemma,SUBSTRING(src.definition FROM 1 FOR 60) FROM wordsXsensesXsynsets AS src INNER JOIN wordsXsensesXsynsets AS dest USING(synsetid) WHERE src.lemma = 'option' AND dest.lemma <> 'option'
SELECT synsetid,lemma,SUBSTRING(definition FROM 1 FOR 60) FROM wordsXsensesXsynsets WHERE synsetid IN ( SELECT synsetid FROM wordsXsensesXsynsets WHERE lemma = 'option') AND lemma <> 'option' ORDER BY synsetid
但是,它们从未完成。至少在任何合理的时间内都没有,我不得不取消所有查询。所有其他查询似乎都能找到,当我分解第二个 SQL 示例时,我可以让各个部分在合理的时间内工作并完成(大约 0.40 秒)
当我尝试 运行 完整语句时,MySQL 命令行客户端挂起。
这个语法有问题吗?是什么导致它需要这么长时间?
编辑:
"EXPLAIN SELECT ..."
的输出"EXPLAIN EXTENDED ...; SHOW WARNINGS;"
的输出我深入研究了所使用的各种语句,发现问题出在 IN
命令中。
MySQL 对数据库中的每一行重复该语句。这是挂起的原因,因为它必须 运行 遍历数十万条记录。
我对此的补救措施是将命令拆分为两个单独的数据库调用,首先获取同义词集,然后动态创建绑定 SQL 字符串以查找同义词集中的单词。