select c.contentid,c.url,c.inputtime,c.title,c.thumb,c.introduction,c.userid,c.companyname,c.areaid,c.groupid,c.linkqq,c.price from cont_product_temp c where 1=1 AND c.catid in (1249,1082,1084,1083,1250,1087,1088,1089,1090,1091,1996,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1997,1998,2017,2018,2019,2020,2021,2306,2307,2308,2309,2310,2311,2312,2313,2314,2315,2316,2317,2318,2319,2320,2321,2322,2323,2324,2325,2326,2327,2328,2329,2330,2331,2332,2333,2334,2335,2336,2337,2338) order by c.groupid desc,c.inputtime desc 求助各位大侠 这样的mysql 语句如何优化 

解决方案 »

  1.   

    主要是查询catid太多了 查询速度非常慢 有没有好的建议呢
      

  2.   

    order by c.groupid desc,c.inputtime desc 还要排序 不慢当然是不行的...将结果弄到内存表 然后在里面排序后再弄出来?
      

  3.   

    你这一堆catid是在哪里弄出来的,你可以试着不要这些catid而是用join的方式来查询,其余的什么的索引的就不说了
      

  4.   

    1.去掉1=1 AND;
    2.加上limit;
    3.groupid desc,inputtime加索引;
    4.找你的联系的id,用between
    别的没办法了
    比如:
    select contentid,url,inputtime,title,thumb,introduction,userid,companyname,areaid,groupid,linkqq,price from cont_product_temp where catid in (1249,1082,1084,1083,1250) or (catid between 1087 and 2338) order by groupid desc,inputtime desc