請問,如何提高BLOB字段的查詢速度。見下面的表結構;我的數據庫表中包含一個BLOB字段的選擇查詢非常慢
CREATE TABLE IF NOT EXISTS `mydb`.`question_` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`question_text` BLOB(90000) NOT NULL,
`comprehension_id` INT UNSIGNED NOT NULL DEFAULT '0',
`MCQ` TINYINT(1) NOT NULL DEFAULT '0',
`subject__id` INT UNSIGNED NOT NULL,
`col1` INT NULL,
`col2` INT NULL,
`col3` INT NULL,
`col4` INT NULL,
`col5` INT NULL,
`col6` INT NULL,
`col7` INT NULL,
PRIMARY KEY (`id`),
INDEX `fk_question__subject_1_idx` (`subject__id` ASC),
CONSTRAINT `fk_question__subject_1`
FOREIGN KEY (`subject__id`)
REFERENCES `mydb`.`subject_` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
我需要的BLOB字段,以便列「QUESTION_TEXT」可容納的圖像,我知道我可以做得更好關閉與存儲圖像文件鏈接到數據庫並保存圖像文件保存到磁盤的選擇,但我不這樣做,因爲我的應用程序的性質是奇特的。
使用BLOB字段是我的應用程序的首選方式,因爲我的用戶將定期創建和更新'問題',而我的用戶不太熟悉圖片上傳,圖片URL等技巧,而寧願複製圖像無論它在哪裏,並粘貼到我的應用程序提供的豐富的文本框(如CKEditor),並繼續打字 - 就像使用MS-Word一樣。 CKEditor可以接受混合文本,圖像,表格等。此富文本框的全部內容都寫入DB(即'question_text'列)。因此需要一個BLOB字段。
但我在這裏面臨的挑戰是,在後臺管理問題時,問題頁面需要較長時間才能加載。
我該如何提高速度,或者我應該如何提高速度。
我的應用程序是建立在JavaEE的堆棧(JPA,EJB,JSP,Servlet中,Glassfish的)和下面是我用來顯示的問題列表中選擇查詢...
SELECT q.id, CONVERT(q.question_text USING UTF8), q.subject__id,
q.comprehension_id, q.MCQ
FROM question_ q
WHERE q.subject__id = 13
limit 1, 20
你可以也有觀點認爲這是通過映射到ORM上question_table https://www.dropbox.com/s/on2wv92c71owx2d/Question.java?dl=0
感謝Question.java代碼,
請向我們展示時只加載'選擇'和'EXPLAIN SELECT ...' –
@Rick,我編輯了我的問題以包含您的建議。謝謝。 –
沒有'ORDER BY',你希望得到20行?你可以得到_any_ 20. –