MySQL, Oracle, MSSQL и т.д.(общие вопросы) | SEclub.org
MySQL, Oracle, MSSQL и т.д.(общие вопросы)
Все новые
Всего сообщений: 189
*
Miha
23 апр 2012 в 16:56
Да
*
Miha
9 июл 2012 в 20:53
Может кто-нибудь объяснить разницу между BOOL и BINARY? Мне хватит и статейки на русском. Хочу хранить просто true или false. Сам для этого использовал BOOL, но сегодня увидел, что в JohnCMS для этого используют BINARY(1). Мелочь, но глупо, я считаю.
*
Flaky
9 июл 2012 в 23:04
Miha: Может кто-нибудь объяснить разницу между BOOL и BINARY? Мне хватит и статейки на русском. Хочу хранить просто true или false. Сам для этого использовал BOOL, но сегодня увидел, что в JohnCMS для этого используют BINARY(1… Подробнее
честно незнаю, гугл тоже нечего путнего не сказал:(
сам использую Bool
*
ImIeee
10 июл 2012 в 10:08
Miha: Может кто-нибудь объяснить разницу между BOOL и BINARY? Мне хватит и статейки на русском. Хочу хранить просто true или false. Сам для этого использовал BOOL, но сегодня увидел, что в JohnCMS для этого используют BINARY(1… Подробнее
Полагаю, ты про MySQL. В памяти они занимают оба по 1 байту (Bool = tinyint(1)), здесь может, на мой взляд, различаться может только скорость. Т.е. нужно просто написать тесты.
*
Miha
10 июл 2012 в 17:02
ImIeee, про тесты я и не подумал. Конечно, я не такой маньяк, чтобы оптимизировать до сотых секунды (для моего движка это не нужно), но всё же интересно.
*
Miha
10 июл 2012 в 18:52
Думаю над структурой ЛС и возник такой вопрос. Допустим, есть одна таблица для всех сообщений. Человеку приходит сообщение. Он заходит в почту и читает. Скрипт при этом делает что-то вроде
"SELECT * FROM `mail` WHERE (`to` = '$myusername') AND (`new` = true) LIMIT 10 --"
А что, если новых сообщений больше 10? Не делать же выборку всей таблицы. Для какой-никакой разгруженности есть идея создать таблицу для новых и таблицу для прочитанных сообщений, но проблема всё равно остаётся.
*
Flaky
10 июл 2012 в 21:10
тебе имено цыферка нужна сколько сообщений? если да, то через count, если нет, то кто мешает почту на страницы разбить, и делать выборку по 5 или 10 смс на страницу.
*
Miha
10 июл 2012 в 21:20
"тебе имено цыферка нужна сколько сообщений?" - нет, это легко.
Ты меня не понял. Предположим, у меня в таблице 100500 непрочитанных сообщений плюс over9000 прочитанных. А в запросе я выбираю только первые 10. Даже если я сделаю выборку из 100500 записей, то откуда я узнаю, что новых сообщений не больше? Тогда одно сообщение останется непрочтённым. А делать выборку по всей таблице сообщений невыгодно, так как сообщений может быть 1ккк. Теперь понятно?
10 июл 2012 в 21:21 / Miha (1)
*
Miha
10 июл 2012 в 21:23
Другими словами, зачем делать "SELECT ..." (по всей таблице с миллионом сообщений), если новых сообщений всего 3?
И зачем делать "SELECT ... LIMIT 10", если непрочитанных сообщений 100?
*
Miha
10 июл 2012 в 21:25
Я придумал один способ, чтобы однозначно узнать примерное количество новых сообщений, но он тоже не совсем оптимизирован.
Делается запрос "SELECT ... LIMIT 10". Если возвращается 10 строк, то делается запрос с большим лимитом.
Запрашиваем "SELECT ... LIMIT 20". Если количество строк меньше 20, то всё ок, выводим сообщения.
*
Flaky
10 июл 2012 в 21:26
вроде понял:), а если сделать дополнительную табличку в которых храни общее количество смс, прочитанных и не прочитанных, запрос к такой таблички пустяк, но ты точно будет знать кол. прочитанных.
*
Miha
10 июл 2012 в 21:35
Flaky, разве что вторую табличку заводить.
Скачать тему
Для полноценного использования разделов сайта войдите или зарегистрируйтесь.
Создание сайтов и программирование | Компьютеры | Форум | Главная
18+ © Seclub.org 2003-2024