Я поэкспериментировал с вашим кодовым пером и обнаружил, что вам просто нужно добавить position: relative;
в ваш класс .custom-btn-#{$color}
.
Ваш :before
псевдоэлемент уже position: absolute
, но в настоящее время он позиционирует себя в столбце вместо самой кнопки.
Вы не можете использовать индекс в этом случае, как Вы используете a RANGE
фильтрация условия.
Если Вы использовали бы что-то как:
SELECT *
FROM values_table this_
WHERE this_.value1 = @value
ORDER BY
value2
LIMIT 10
, затем создавая сводный индекс на (VALUE1, VALUE2)
использовался бы и для фильтрации и для упорядочивания.
Но Вы используете расположенное условие, вот почему необходимо будет выполнить упорядочивание так или иначе.
Ваш сводный индекс будет похож на это:
value1 value2 ----- ------ 1 10 1 20 1 30 1 40 1 50 1 60 2 10 2 20 2 30 3 10 3 20 3 30 3 40
, и если Вы выбираете 1
и 2
в value1
, Вы все еще не получаете целый отсортированный набор value2
.
Если Ваш индекс на value2
не является очень выборочным (т.е. нет многих DISTINCT value2
в таблице), Вы могли попробовать:
CREATE INDEX ix_table_value2_value1 ON mytable (value2, value1)
/* Note the order, it's important */
SELECT *
FROM (
SELECT DISTINCT value2
FROM mytable
ORDER BY
value2
) q,
mytable m
WHERE m.value2 >= q.value2
AND m.value2 <= q.value2
AND m.value1 BETWEEN 13123123 AND 123123123
Это называют a SKIP SCAN
метод доступа. MySQL
не поддерживает его непосредственно, но это может быть эмулировано как это.
RANGE
доступ будет использоваться в этом случае, но вероятно Вы не получите выигрыша в производительности если DISTINCT value2
включите меньше, чем о 1%
из строк.
Отметьте использование:
m.value2 >= q.value2
AND m.value2 <= q.value2
вместо
m.value2 = q.value2
Это делает MySQL
выполнить RANGE
проверение каждого цикла.
Кажется мне, что у Вас есть два полностью независимых ключа, один для value1 и один для value2.
Таким образом, при использовании value1 ключа для получения, записи не обязательно возвращаются в порядке value2, таким образом, они должны быть отсортированы. Это еще лучше, чем полное сканирование таблицы, так как Вы только сортируете записи, которые удовлетворяют Ваш "где value1" пункт.
Я думаю (если бы это возможно в MySQL), составной ключ на (value1, value2) решил бы это.
Попытка:
CREATE TABLE values_table (
id int(11) NOT NULL auto_increment,
...
value1 int(10) unsigned NOT NULL default '0',
value2 int(11) NOT NULL default '0',
PRIMARY KEY (id),
KEY value1 (value1),
KEY value1and2 (value1,value2),
) ENGINE=MyISAM AUTO_INCREMENT=2364641 DEFAULT CHARSET=utf8;
(или эквивалент ALTER TABLE
), принятие это - правильный синтаксис в MySQL для составного ключа.
Во всех базах данных я знаю (и я должен признать, что MySQL не является одним из них), который заставил бы механизм DB выбирать value1and2 ключ для получения строк, и они будут уже отсортированы в порядке value2-within-value1, так не нуждался бы в виде файла.
Можно все еще сохранить value2 ключ при необходимости в нем.