背景:數據結構
solr 4.* 或者 solr 5.1xml
數據結構存在entity嵌套字符串
問題描述:源碼
全量導入100萬條數據的話,子entity的query語句會被調用100萬次,因爲solr沒有使用PreparedStatement(綁定變量的方式),SQL會在DB Server上硬解析100萬次。it
此問題是solr的bug(solr-1262),從3.*到目前(5.1.0)一直沒有修改。table
解決方法:變量
修改solr的源碼,改成使用PreparedStatement(綁定變量的方式)。select
偷懶的方式能夠hack一下solr的代碼,好比hack
一、將query的格式改成 "select * from tableA where id=?###123"。bug
二、在JDBCDataSource中將Statement修改成PreparedStatement,並自行解析query中的字符串,其中真正的SQL爲select * from tableA where id=?,參數爲123。
更完備的方法能夠修改db-data-config.xml的schema,增長支持PreparedStatement的屬性~