diff --git a/src/app.service.ts b/src/app.service.ts
index 6d7a03c..57435fd 100644
--- a/src/app.service.ts
+++ b/src/app.service.ts
@@ -65,7 +65,7 @@ export class AppService {
     });
 
     const list = await this.connection.query(
-      `SELECT id, eip, title, author, status, type, category FROM "EIPs" ${condition} order by eip LIMIT ${take} OFFSET ${skip}`,
+      `SELECT id, eip, title, author, status, type, category FROM "EIPs" ${condition} order by (substring("eip", '^[0-9]+'))::int LIMIT ${take} OFFSET ${skip}`,
     );
 
     return {
@@ -92,7 +92,7 @@ export class AppService {
         numbers.forEach((item) => {
           if (Number(item) < 10000) {
             // eip number don't overt 10000
-            eips.push(`eip::text LIKE '%${item}%'`);
+            eips.push(`eip LIKE '%${item}%'`);
           }
         });
         if (eips.length === 1) {
@@ -113,7 +113,7 @@ export class AppService {
         // title match
         const conditions = eips.length ? `${eipCondition} AND` : ``;
         const titleRecords = await this.connection.query(
-          `SELECT eip, type, category, ts_headline('english',title, q), rank FROM (SELECT eip, type, category, title, q, ts_rank_cd(to_tsvector(title_ts), q) AS rank FROM "EIPs", phraseto_tsquery('english','${txt}') q WHERE ${conditions} title_ts @@ q ORDER BY rank DESC LIMIT 20) AS foo;`,
+          `SELECT eip, type, category, ts_headline('english',title, q), rank FROM (SELECT eip, type, category, title, q, ts_rank_cd(title_ts, q) AS rank FROM "EIPs", phraseto_tsquery('english','${txt}') q WHERE ${conditions} title_ts @@ q ORDER BY rank DESC LIMIT 20) AS foo;`,
         );
 
         if (titleRecords && titleRecords.length > 0) {
@@ -122,7 +122,7 @@ export class AppService {
 
         // author match
         const authorRecords = await this.connection.query(
-          `SELECT eip, type, category, ts_headline('english', author, q), rank FROM (SELECT eip, type, category, author, q, ts_rank_cd(to_tsvector(author_ts), q) AS rank FROM "EIPs", phraseto_tsquery('english','${txt}') q WHERE ${conditions} author_ts @@ q ORDER BY rank DESC LIMIT 20) AS foo;`,
+          `SELECT eip, type, category, ts_headline('english', author, q), rank FROM (SELECT eip, type, category, author, q, ts_rank_cd(author_ts, q) AS rank FROM "EIPs", phraseto_tsquery('english','${txt}') q WHERE ${conditions} author_ts @@ q ORDER BY rank DESC LIMIT 20) AS foo;`,
         );
 
         if (authorRecords && authorRecords.length > 0) {
@@ -131,7 +131,7 @@ export class AppService {
 
         // content match
         const contentRecords = await this.connection.query(
-          `SELECT eip, type, category, title, ts_headline('english',content, q), rank FROM (SELECT eip, type, category, title, content, q, ts_rank_cd(to_tsvector(content_ts), q) AS rank FROM "EIPs", phraseto_tsquery('english','${txt}') q WHERE ${conditions} content_ts @@ q ORDER BY rank DESC LIMIT 20) AS foo;`,
+          `SELECT eip, type, category, title, ts_headline('english',content, q), rank FROM (SELECT eip, type, category, title, content, q, ts_rank_cd(content_ts, q) AS rank FROM "EIPs", phraseto_tsquery('english','${txt}') q WHERE ${conditions} content_ts @@ q ORDER BY rank DESC LIMIT 20) AS foo;`,
         );
         if (contentRecords && contentRecords.length > 0) {
           result['content_list'] = contentRecords;
@@ -401,21 +401,9 @@ export class AppService {
     try {
       await this.prisma.eIPs.deleteMany({});
 
-      for (const item of writeData) {
-        // 确保 requires 字段是数字数组
-        const formattedItem = {
-          ...item,
-          requires: Array.isArray(item.requires)
-            ? item.requires.map((r) =>
-                typeof r === 'number' ? r : parseInt(r),
-              )
-            : [],
-        };
-
-        await this.prisma.eIPs.create({
-          data: formattedItem,
-        });
-      }
+      await this.prisma.eIPs.createMany({
+        data: writeData,
+      });
     } catch (err) {
       console.error('Error saving data:', err);
       throw err;