2012-06-06 48 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