2012-06-06 46 views
0

我有一个MySql数据库。 我的主表是一系列5本书的所有句子,书的索引,书的章节,章节的句子。MySql - 获取所有发生的内容

示例 - 对于哈利波特第五册第一章第三句,我会有这样的一排。

BookID ChapterID SentenceID Text 
    4   1   3   Deprived of their usual car-washing and lawn-mowing pursuits, the inhabitants of Privet Drive had retreated into the shade of their cool houses, windows thrown wide in the hope of tempting in a nonexistent breeze. 

我需要检索所有发生的字母或单词。 因此,如果我搜索'e',我会得到同一行17次。 'e'出现在这一行17次。

我简化了场景,我有更多的信息来检索每个字母。

到目前为止,我一直无法得到一些有用的东西。

谢谢

+0

分享你的sql。 –

回答

1

我90%肯定的SQL查询将不会为给定的数据库行返回多个行,除非你使用JOIN。但是这对你的目的来说效率很低。

这种方式通常会执行的是使用如SELECT * FROM books WHERE Text LIKE '%e%'这样的查询,它将返回文本中至少有一个“e”的所有行;那么你的应用程序会遍历行并计算出现次数。

+0

我正在寻找一个SQL解决方案。这就是我现在正在做的,但它有点慢。我认为使用SQL引擎会获得更好的性能 –

+0

对于所描述的问题类型,更快的性能通常来自提前做更多计算:例如,计算每个字母的出现并将其存储在数据库中。 – benzado