MySql 数据库查询语句太慢,如何优化! 最近做一个项目,用到了一条数据库查询语句,例如:select a, b from c where (a+b/1000) between 条件A and 条件B。可是会很慢,是不是因为(a+b/1000)的原因啊?不知道有没有什么好的办法啊?先谢谢了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 基本上是。建议你贴出你的 show index from tablec;explain select a, b from c where (a+b/1000) between 条件Aand 条件B这种 a+b/1000 无法使用索引。要参考一下你的具体数据分布和条件,然后进行语句上的优化。 对索引列进行运算或者使用mysql自带函数都会是索引失效。 下面是全的sql语句public DataView FehlerbildErstellen(double sekunden, double nanosekunden, double zeitvor, double zeitnach, string indexFehlernummer){double startZeit = sekunden + nanosekunden / 1000000000 - zeitvor / 1000;double endZeit = sekunden + nanosekunden / 1000000000 + zeitnach / 1000;string SucheFehlerBild = "SELECT Protokoll.Sekunden, Protokoll.Nanosekunden, " +" Logisches_Objekt.Nummer AS LObjNummer, Objekt.Nummer AS ObjNummer," +" diagnosetexte.Nummer, Protokoll.Typ AS ProtTyp, " +" Objekt.Typ AS ObjTyp " +" FROM ((((Objekt INNER JOIN Protokoll ON Objekt.Nummer = Protokoll.Einheit) INNER JOIN " + " Logisches_Objekt ON Objekt.Link_LObjekt = Logisches_Objekt.Nummer) INNER JOIN " +" Typ ON Objekt.Typ = Typ.Objekttyp AND Protokoll.Typ = Typ.Protokolltyp) INNER JOIN " +" diagnosetexte ON Protokoll.Nummer = diagnosetexte.Nummer AND Protokoll.Typ = diagnosetexte.Typ) " +" WHERE (diagnosetexte.Nummer IN (" + indexFehlernummer + ")) AND ((Protokoll.Sekunden+Protokoll.Nanosekunden/1000000000) BETWEEN " + strStartZeit + " AND " + strEndZeit + ")";} sql语句报错,请教~~~ 问个小问题哦...删除记录后..自增的ID中间断了几个号码怎么解决?在线等~~~ 关于MySQL 开发的一些基础性问题 mysql administratator 在 Query Browser里使用中文查询 显示重叠 听说mysql可以装个插件,就不用命令行输入。不知道那插件哪里下载 mysql 备份 Postgresql 中字段值自动增加,除了定义为serial之外,还有没有别的方法? mysql连接出现的奇怪的问题 求两个MYSQL语句 求助大神们,分表能不能用存储过程??? MySQL-Front的注册问题 【性能瓶颈】大家都来支下招....
explain select a, b from c where (a+b/1000) between 条件Aand 条件B
这种 a+b/1000 无法使用索引。要参考一下你的具体数据分布和条件,然后进行语句上的优化。
下面是全的sql语句
public DataView FehlerbildErstellen(double sekunden, double nanosekunden, double zeitvor, double zeitnach, string indexFehlernummer)
{
double startZeit = sekunden + nanosekunden / 1000000000 - zeitvor / 1000;
double endZeit = sekunden + nanosekunden / 1000000000 + zeitnach / 1000;
string SucheFehlerBild = "SELECT Protokoll.Sekunden, Protokoll.Nanosekunden, " +
" Logisches_Objekt.Nummer AS LObjNummer, Objekt.Nummer AS ObjNummer," +
" diagnosetexte.Nummer, Protokoll.Typ AS ProtTyp, " +
" Objekt.Typ AS ObjTyp " +
" FROM ((((Objekt INNER JOIN Protokoll ON Objekt.Nummer = Protokoll.Einheit) INNER JOIN " + " Logisches_Objekt ON Objekt.Link_LObjekt = Logisches_Objekt.Nummer) INNER JOIN " +
" Typ ON Objekt.Typ = Typ.Objekttyp AND Protokoll.Typ = Typ.Protokolltyp) INNER JOIN " +
" diagnosetexte ON Protokoll.Nummer = diagnosetexte.Nummer AND Protokoll.Typ = diagnosetexte.Typ) " +
" WHERE (diagnosetexte.Nummer IN (" + indexFehlernummer + ")) AND ((Protokoll.Sekunden+Protokoll.Nanosekunden/1000000000) BETWEEN " + strStartZeit + " AND " + strEndZeit + ")";
}