select * from TABLE0 where trim(column1)=:param
當表數據量大時,即使給column1字段加上索引,這條查詢語句也會很慢。
因為使用trim函數后,column1的索引會失效,有兩種處理方法:
1.給表加上trim(column1)函數索引
這樣就能走索引查詢,不用全表掃描
2.代碼里面對param補齊末尾的空格
使用tirm無非是擔心char字段存儲的長度沒達到數據庫設置的長度,數據末尾會出現空格,而前端展示數據時一般會去掉空格傳給后端,這就導致無法查詢出數據,char是用來存儲定長字符的,雖然出現這種問題,是設計和使用上的不合理導致,但是還得解決這個問題。
可以在程序中對傳入參數的末尾補齊空格,直到達到char字段的長度,這樣查詢就不需要tirm了,java代碼如下:
private String formatChar(String s, int charLen){int len = s == null ? 0 : s.length();if(len > 0 && len < charLen){StringBuilder blank = new StringBuilder();for (int i = 0, j= charLen - len; i < j; i++) {blank.append(" ");}s = s + blank;}return s;}