Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql查询顺序(按情况、时间和字段)_Mysql_Sql Order By_Field_Case - Fatal编程技术网

mysql查询顺序(按情况、时间和字段)

mysql查询顺序(按情况、时间和字段),mysql,sql-order-by,field,case,Mysql,Sql Order By,Field,Case,有人知道如何加快查询速度吗 我正在寻找关键字“酒吧”和“咖啡馆”在几个领域就只有一个表,如下图所示,然后我想按他们最合适的点击,所以我做所有的领域和案件时,可能性,当然这是放慢了很多,但我能做些什么来加快它 首先,我按照准确的点击率字段进行订购,在本例中,这没有意义,因为关键字是bar和cafe,但当我查找“company name”时,我希望这家公司是#1 然后,如果确切的名称没有到达到期字段,我尝试按类似的名称/名称部分订购 在那之后,我按“金额”订购,可以是8,30欧元到500欧元,无论什

有人知道如何加快查询速度吗

我正在寻找关键字“酒吧”和“咖啡馆”在几个领域就只有一个表,如下图所示,然后我想按他们最合适的点击,所以我做所有的领域和案件时,可能性,当然这是放慢了很多,但我能做些什么来加快它

  • 首先,我按照准确的点击率字段进行订购,在本例中,这没有意义,因为关键字是bar和cafe,但当我查找“company name”时,我希望这家公司是#1

  • 然后,如果确切的名称没有到达到期字段,我尝试按类似的名称/名称部分订购

  • 在那之后,我按“金额”订购,可以是8,30欧元到500欧元,无论什么,在那之后,将有0欧元的货物,这是免费进入的

  • 然后,我再次使用所有的免费条目,尝试按“case-when”和几个通配符对它们进行排序

  • 问题实际上是order by,查询本身只需要0,02秒,没有任何顺序,而order by大约需要5-7秒。 虽然我可能错了,但我可以在查询中加快速度

    这些字段当然有索引

    任何帮助都将不胜感激:)


    字段(lcase(companytable.company\u name),'bar cafe')
    可能不是您想要的。使用
    字段时,要测试的每个字符串必须是单独的参数,而不是空格分隔的。所以它应该是
    字段(lcase(companytable.company\u name),'bar',cafe')
    这实际上就是我想要的,因为它不会将这两个单词分开以获得精确的命中率,尽管这已经帮到我了,因为我创建了两个字段,并且可以将其合并到一个字段中。更进一步……:)谢谢,仅用两个参数使用
    字段
    没有什么意义<代码>字段(x,y)
    x=y
    相同。
     select * FROM companytable where 
     companytable.aktiv='1'
     and platform='1'
     and (lcase(companytable.company_name) like '%bar%'
     or lcase(companytable.company_name_modrewrite) like '%bar%'
     or lcase(companytable.company_www) like '%bar%'
     or lcase(companytable.company_nachname) like '%bar%'
     or lcase(companytable.company_home_text) like '%bar%'
     or lcase(companytable.keywords) like '%bar%'
     or lcase(companytable.company_name) like '%cafe%'
     or lcase(companytable.company_name_modrewrite) like '%cafe%'
     or lcase(companytable.company_www) like '%cafe%'
     or lcase(companytable.company_nachname) like '%cafe%'
     or lcase(companytable.company_home_text) like '%cafe%'
     or lcase(companytable.keywords) like '%cafe%'
     or lcase(companytable.company_name) like '%bar cafe%'
     or lcase(companytable.company_name_modrewrite) like '%bar_cafe%'
     or lcase(companytable.company_www) like '%bar cafe%'
     or lcase(companytable.company_nachname) like '%bar cafe%'
     or lcase(companytable.company_home_text) like '%bar cafe%'
     or lcase(companytable.keywords) like '%bar cafe%')
    order by 
     FIELD(lcase(companytable.company_name),'bar cafe') desc,
     FIELD(lcase(companytable.company_name),'cafe bar') desc,
    case when lcase(companytable.company_name) LIKE "%cafe bar%" then 1 END desc,
    case when lcase(companytable.company_name) LIKE "%bar cafe%" then 1 END desc,
    cast(companytable.amount as unsigned) desc,
    case when lcase(companytable.company_name) LIKE "bar cafe%" then 1 END desc,
    case when lcase(companytable.company_name) LIKE "%bar cafe%" then 1 END desc,
    case when lcase(companytable.company_name) LIKE "%bar cafe" then 1 END desc,
    case when lcase(companytable.company_name) LIKE "cafe bar%" then 1 END desc,
    case when lcase(companytable.company_name) LIKE "%cafe bar%" then 1 END desc,
    case when lcase(companytable.company_name) LIKE "%cafe bar" then 1 END desc,
    FIELD(lcase(companytable.company_name),'bar cafe') desc,
    companytable.company_name