From c07ab9298d821028277ceb04cb9391cdbfaa36db Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sun, 10 Feb 2019 14:26:56 +0800 Subject: [PATCH] Optimize MYSQL 5.6 COUNT Slow --- Src/Asp.Net/MySqlTest/Config.cs | 6 +++--- Src/Asp.Net/MySqlTest/Demos/1_Query.cs | 9 ++++++++- .../Realization/MySql/SqlBuilder/MySqlQueryBuilder.cs | 5 ++++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/Src/Asp.Net/MySqlTest/Config.cs b/Src/Asp.Net/MySqlTest/Config.cs index b3b355553..48e302503 100644 --- a/Src/Asp.Net/MySqlTest/Config.cs +++ b/Src/Asp.Net/MySqlTest/Config.cs @@ -8,8 +8,8 @@ namespace OrmTest { public class Config { - public static string ConnectionString = "server=localhost;Database=SqlSugar4xTest;Uid=root;Pwd=root"; - public static string ConnectionString2 = "server=localhost;Database=SQLSUGAR4XTEST;Uid=root;Pwd=root"; - public static string ConnectionString3 = "server=localhost;Database=sqlsugar4xtest;Uid=root;Pwd=root"; + public static string ConnectionString = "server=localhost;Database=SqlSugar4xTest;Uid=root;Pwd=haosql"; + public static string ConnectionString2 = "server=localhost;Database=SQLSUGAR4XTEST;Uid=root;Pwd=haosql"; + public static string ConnectionString3 = "server=localhost;Database=sqlsugar4xtest;Uid=root;Pwd=haosql"; } } diff --git a/Src/Asp.Net/MySqlTest/Demos/1_Query.cs b/Src/Asp.Net/MySqlTest/Demos/1_Query.cs index 2ed4e632b..c5616ae5c 100644 --- a/Src/Asp.Net/MySqlTest/Demos/1_Query.cs +++ b/Src/Asp.Net/MySqlTest/Demos/1_Query.cs @@ -260,6 +260,12 @@ namespace OrmTest.Demo //skip5 var skip5 = db.Queryable().Skip(5).ToList(); + + + var page2 = db.Queryable().Where(it=>it.Id>0).ToPageList(1,2,ref totalCount); + + + var page3 = db.SqlQueryable("SELECT * FROM Student").ToPageList(1, 2, ref totalCount); } public static void Where() { @@ -332,9 +338,10 @@ namespace OrmTest.Demo .Select((st, sc, sc2) => new { st.Name, st.Id, schoolName = sc.Name, schoolName2 = sc2.Name }).ToPageList(1,2); //join 3 table page + int count = 0; var list8 = db.Queryable((st, sc, sc2) => st.SchoolId == sc.Id && sc.Id == sc2.Id) .OrderBy(st=>st.Id) - .Select((st, sc, sc2) => new { st.Name, st.Id, schoolName = sc.Name, schoolName2 = sc2.Name }).ToPageList(1, 2); + .Select((st, sc, sc2) => new { st.Name, st.Id, schoolName = sc.Name, schoolName2 = sc2.Name }).ToPageList(1, 2,ref count); } public static void Funs() { diff --git a/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlQueryBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlQueryBuilder.cs index 9a722cbad..0e6da9a0b 100644 --- a/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlQueryBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlQueryBuilder.cs @@ -63,7 +63,10 @@ namespace SqlSugar this.OrderByValue = oldOrderValue; return result; } - + public override string ToCountSql(string sql) + { + return Regex.Replace(sql,"^SELECT .+? FROM ", "SELECT COUNT(*) FROM "); + } #endregion #region Get SQL Partial