SQL 쿼리 결과를 계층 구조로 표시하려는 응용 프로그램이 있습니다. this example을 기반으로하는 작업이 있습니다.Qt - QTreeView 및 SQL - 성능 관련 조언
트리 노드가 다음과 같이 현재 만들어 본다되어 내 코드의 주요 부분은 :
void TreeModel::setupModelData(TreeItem *parent)
{
QList<TreeItem*> parents;
QList<int> indentations;
parents << parent;
QList<QVariant> columnData;
QVector<QString> vecFileNames = getFileNames();
QVector<QString> vecTableNames = getTableNames();
for(int i = 0; i < vecFileNames.size(); i++)
{
columnData.clear();
columnData << vecFileNames[i];
parents.last()->appendChild(new TreeItem(columnData, parents.last()));
int childCount = parents.last()->childCount() - 1;
parents << parents.last()->child(childCount); //add the current parent's last child as a parent
for(int j = 0; j < vecTableNames.size(); j++)
{
columnData.clear();
columnData << vecTableNames[j];
parents.last()->appendChild(new TreeItem(columnData, parents.last()));
QVector<QString> vecTableValues = getTableValues(&vecTableNames[j]);
int childCount = parents.last()->childCount() - 1;
parents << parents.last()->child(childCount); //add the current parent's last child as a parent
for(int k = 0; k < vecTableValues.size(); k++)
{
columnData.clear();
columnData << vecTableValues[j];
parents.last()->appendChild(new TreeItem(columnData, parents.last()));
}
}
parents.pop_back();
}
}
QVector<QString> TreeModel::getFileNames()
{
db.open();
QVector<QString> vecFileNames;
QSqlQuery query(db);
QString strQuery = "SELECT PK_fileName FROM fileproperties";
query.prepare(strQuery);
if(query.exec() == true)
{
while(query.next())
{
vecFileNames.push_back(query.value(0).toString());
}
}
db.close();
return vecFileNames;
}
그러나, 데이터의 2000 쿼리 가치가 매우 느린 검색하는 중입니다. 누구나 지금 내가 사용하고있는 다른 접근법을 제안 할 수 있습니까?
모델을보기에서 분리하고 업데이트 한 다음보기에 첨부하면 코드 속도가 빨라질 수 있습니다. –