您的位置:首页 > 其它

Insert 100000 tuples with or without index on ML

2009-08-19 19:13 706 查看
#include <stdio.h>

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <sys/time.h>

#include "include/isql.h"

/////////////////////////////////////////////////////////////////////////////////////////////////////

//time caculation

long timecacul () {

struct timeval tv;

struct timezone tz;

gettimeofday(&tv,&tz);

return (tv.tv_sec * 1000 + tv.tv_usec / 1000);

}

/////////////////////////////////////////////////////////////////////////////////////////////////////

int main(int argc, char **argv)

{

iSQL isql;

long starttime, endtime, resulttime;

int i=0;

char query[2048];

if(!iSQL_connect(&isql,"127.0.0.1","minchul","sys","sys")){

printf("fail %s", iSQL_error(&isql));

return -1;

}

////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////create table

memset (query,0,2048);

//////// no -index

sprintf(query,"drop table index_test;");

if (iSQL_query(&isql,query)<0) {

iSQL_rollback(&isql);

fprintf(stderr, "error query: %s/n", query);

printf("error [%d] [%s]/n", iSQL_errno(&isql),iSQL_error(&isql));

printf("/n/nerror query 1: %s/n/n", query);

exit(1);

}

sprintf(query,"create table index_test(id int, name varchar(20));");

if (iSQL_query(&isql,query)<0) {

iSQL_rollback(&isql);

fprintf(stderr, "error query: %s/n", query);

printf("error [%d] [%s]/n", iSQL_errno(&isql),iSQL_error(&isql));

printf("/n/nerror query 1: %s/n/n", query);

exit(1);

}

//////////////////////////////////////////////////////////////////////////////

////////test the times of insert 100000

starttime=timecacul();

for (i=0; i<100000; i++)

{

sprintf(query,"insert into index_test values(%d,'ceshi%d');",i,i);

if (iSQL_query(&isql,query)<0) {

iSQL_rollback(&isql);

printf("fail %s", iSQL_error(&isql));

exit(1);

};

}

endtime=timecacul();

resulttime=endtime-starttime;

printf("no_index_insert_time : %dms./n",resulttime);

///////////////////////////////////////////////////////////////////////////////

////////test the times of searching one tuple in 10000 without index

starttime=timecacul();

sprintf(query,"select * from index_test where name = 'ceshi96593';");

if (iSQL_query(&isql,query)<0) {

iSQL_rollback(&isql);

fprintf(stderr, "error query: %s/n", query);

printf("error [%d] [%s]/n", iSQL_errno(&isql),iSQL_error(&isql));

printf("/n/nerror query 1: %s/n/n", query);

exit(1);

}

endtime=timecacul();

resulttime=endtime-starttime;

printf("no_index_search_time : %dms./n",resulttime);

iSQL_commit(&isql);

//////////////////////////////////////////////////////////////////////////////

///////create table 2

sprintf(query,"drop table index_test1;");

if (iSQL_query(&isql,query)<0) {

iSQL_rollback(&isql);

fprintf(stderr, "error query: %s/n", query);

printf("error [%d] [%s]/n", iSQL_errno(&isql),iSQL_error(&isql));

printf("/n/nerror query 1: %s/n/n", query);

exit(1);

}

sprintf(query,"create table index_test1(id int, name varchar(20));");

if (iSQL_query(&isql,query)<0) {

iSQL_rollback(&isql);

fprintf(stderr, "error query: %s/n", query);

printf("error [%d] [%s]/n", iSQL_errno(&isql),iSQL_error(&isql));

printf("/n/nerror query 1: %s/n/n", query);

exit(1);

}

//////////////////////////////////////////////////////////////////////////////////////

////////////create index idx_name on index_test1

//////////Tree - changing

sprintf(query,"create index idx_name on index_test1(name)");

if (iSQL_query(&isql,query)<0) {

iSQL_rollback(&isql);

printf("fail %s", iSQL_error(&isql));

exit(1);

};

starttime=timecacul();

for (i=0; i<100000; i++)

{

sprintf(query,"insert into index_test1 values(%d,'ceshi%d');",i,i);

if (iSQL_query(&isql,query)<0) {

iSQL_rollback(&isql);

printf("fail %s", iSQL_error(&isql));

exit(1);

};

}

endtime=timecacul();

resulttime=endtime-starttime;

printf("index_insert_time : %dms./n",resulttime);

////////////////////////////////////////////////////////////////////////////////

////////test the times of searching one tuple in 100000 with index

starttime=timecacul();

sprintf(query,"select * from index_test1 where name = 'ceshi96593';");

if (iSQL_query(&isql,query)<0) {

iSQL_rollback(&isql);

fprintf(stderr, "error query: %s/n", query);

printf("error [%d] [%s]/n", iSQL_errno(&isql),iSQL_error(&isql));

printf("/n/nerror query 1: %s/n/n", query);

exit(1);

}

iSQL_commit(&isql);

/*

//Tree - non changing

sprintf(query,"create index idx_id on index_test(id)");

if (iSQL_query(&isql,query)<0) {

iSQL_rollback(&isql);

printf("fail %s", iSQL_error(&isql));

exit(1);

};

*/

endtime=timecacul();

resulttime=endtime-starttime;

printf("index_search_time : %dms./n",resulttime);

iSQL_disconnect(&isql);

return 0;

}

[db@localhost sqlite3]$ gcc index_ml.c -o index_ml -L/home/db/mobilelite/lib -lmobiledbms -lpthread -lnsl -lm

[db@localhost sqlite3]$ ./index_ml

no_index_insert_time : 1811ms.

no_index_search_time : 0ms.

index_insert_time : 4500ms.

index_search_time : 8ms.

[db@localhost sqlite3]$ ./index_ml

no_index_insert_time : 1766ms.

no_index_search_time : 0ms.

index_insert_time : 4513ms.

index_search_time : 8ms.

[db@localhost sqlite3]$ ./index_ml

no_index_insert_time : 1789ms.

no_index_search_time : 0ms.

index_insert_time : 4316ms.

index_search_time : 8ms.

[db@localhost sqlite3]$ ./index_ml

no_index_insert_time : 1774ms.

no_index_search_time : 0ms.

index_insert_time : 4290ms.

index_search_time : 8ms.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: