У меня есть база данных PostgreSQL, таблица из 1,5M записей и код, подобный этому:
QString sql = "SELECT p.id, initcap(p.lname) lname, initcap(p.fname) fname, initcap(p.mname) mname, p.birthday, c.name as cname, p.enp "
"FROM oms.persons p "
"LEFT JOIN ref.countries c ON (p.citizenship = c.code) "
"WHERE p.lname LIKE :LNAME "
"ORDER BY p.lname, p.fname, p.mname LIMIT 100";
QSqlQuery q;
q.prepare(sql);
q.bindValue(":LNAME", "TEST%");
q.exec();
Это занимает ~ 1200 мсек, но если я выполню этот запрос без функции bindValue () и заменим: LNAME на 'TEST%', это займет всего ~ 30 мсек.
Что я должен сделать, чтобы исправить это странное поведение QSqlQuery?
Технические характеристики:
Qt 4.7.3 Windows
PostgreSQL 8.4.8 в Debian Linux