小编Den*_* O.的帖子

优化MySQL搜索查询

需要你帮助优化一个mysql查询.让我们以简单的表格为例.

CREATE TABLE `Modules` (
 `ID` int(11) NOT NULL AUTO_INCREMENT,
 `moduleName` varchar(100) NOT NULL,
 `menuName` varchar(255) NOT NULL,
PRIMARY KEY (`ID`),
KEY `moduleName` (`moduleName`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Run Code Online (Sandbox Code Playgroud)

让我们填写一些数据:

INSERT INTO  `Modules` (`moduleName` ,`menuName`)
VALUES 
    ('abc1',  'name1'), 
    ('abc',  'name2'), 
    ('ddf',  'name3'), 
    ('ccc',  'name4'), 
    ('fer',  'name5');
Run Code Online (Sandbox Code Playgroud)

还有一些样本字符串.让它成为abc_def;

传统上我们试图找到包含搜索字符串的所有行.

相反,我的任务是找到包含moduleName在输入字符串中的所有行.现在我有以下查询来获得所需的结果:

SELECT `moduleName` ,`menuName` 
FROM `Modules` 
WHERE 'abc_def' LIKE(CONCAT(`moduleName`,'%'))
Run Code Online (Sandbox Code Playgroud)

这将返回

moduleName   | menuName 
---------------------------
abc          | name2
Run Code Online (Sandbox Code Playgroud)

问题是,此查询未使用索引.

有没有办法强迫它使用一个?

mysql query-optimization

14
推荐指数
2
解决办法
3578
查看次数

PWA-IOS 13暗模式下的状态栏背景和文本颜色

苹果在新的IOS 13上引入了暗模式之后,我的PWA状态栏颜色遇到了一些麻烦。

我曾经将“ apple-mobile-web-app-status-bar-style”设置为“ black-translucent”,以使状态栏上带有白色文本的透明背景。现在,根据用户系统主题(浅色或深色),文本颜色从白色变为黑色,反之亦然。由于我的布局使用深色背景,因此结果是在“几乎黑色”背景上显示黑色文本。

任何解决方法?

谢谢!

黑色半透明-显示白色文本-ios12 黑色半透明-显示黑色文本-ios13

html css progressive-web-apps ios13 ios-darkmode

6
推荐指数
1
解决办法
545
查看次数

PHP:将单引号字符串转换为双引号

我需要将带有 unicode \xCODEs 的字符串转换为常规字符串。问题是我作为输入的字符串似乎是单引号的。

有没有办法将单引号字符串转换为双引号?

这里有一些代码可以更好地理解:

$s1 = '(single quotes): Conductivity @ 20\xc3\x82\xc2\xb0C';
$s2 = "(double quotes): Conductivity @ 20\xc3\x82\xc2\xb0C";

echo "<br>";
echo iconv("UTF-8", "ISO-8859-1//IGNORE", $s1);
echo "<br>";
echo iconv("UTF-8", "ISO-8859-1//IGNORE", $s2);
Run Code Online (Sandbox Code Playgroud)

将输出:

(single quotes): Conductivity @ 20\xc3\x82\xc2\xb0C
(double quotes): Conductivity @ 20°C
Run Code Online (Sandbox Code Playgroud)

提前致谢!

php unicode escaping double-quotes single-quotes

4
推荐指数
1
解决办法
3034
查看次数

双向迭代范围

在两个方向的某个范围内进行循环迭代是一项非常常见且轻松的任务:

var currentIndex = 0;
var range = ['a', 'b', 'c', 'd', 'e', 'f'];

function getNextItem(direction) {
    currentIndex += direction;
    if (currentIndex >= range.length) { currentIndex = 0; }
    if (currentIndex < 0) { currentIndex = range.length-1; }

    return range[currentIndex];
}        
// get next "right" item
console.log(getNextItem(1));

// get next "left" item
console.log(getNextItem(-1));
Run Code Online (Sandbox Code Playgroud)

上面的代码可以完美地工作,但是我花了大约一个小时试图摆脱双重if检查。

有没有没有办法解决?有点单线?

javascript arrays shorthand

1
推荐指数
1
解决办法
39
查看次数