这是我的查询。
select distinct p_code from myTable
where ((INSTR(LOWER(subject), LOWER('jpg'))) )
order by code1, code2 limit 400,20;
p_code : INT
subject : VARCHAR
code1 : INT
code2 : INT
有一个INSTR(subject)
,然后我需要将 FullText索引添加到subject
列。
还有一个order by code1, code2
,所以我想我必须为这三列(subject, code1, code2
)添加索引。
但是正如您所知,由于INT列,无法添加 FullText索引。
在这种情况下我该怎么做?
答案 0 :(得分:1)
where ((INSTR(LOWER(subject), LOWER('jpg'))) )
- >
where subject LIKE '%jpg%'
或者可能
where subject LIKE '%jpg'
和使用以subject
结尾的_ci
排序规则。
但这不会明显加快查询速度,因为必须扫描整个表格。
即使您添加了INDEX(code1, code2)
,并且优化程序选择使用它,随着OFFSET
的增加,它也会越来越慢。但这是可以解决的 - remembering where you left off。
FULLTEXT
不太可能有所帮助。
另一方面......
如果您有extent
列有时(或经常)" jpg",那么
where `extent` = 'jpg'
和
INDEX(extent, code1, code2)
不必进行表扫描。 (仍然,我的链接"分页"适用。)